Когда я впервые публикую свое решение, содержащее веб-приложение ASP.NET, файл .wpp.targets игнорируется.Папка публикации содержит также файлы, которые не должны публиковаться.
После удаления всех файлов из моей папки публикации и повторной публикации все в порядке.Но когда я делаю чистое решение из Visual Studio, файл .wpp.targets снова игнорируется.
Надеюсь, кто-то может решить эту проблему или объяснить, почему это происходит.Я хотел бы использовать его на нашем сервере сборки, где сборка всегда начинается с чистого решения.
Что я использовал:
MSBuild версия 15.8.166 "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ msbuild.exe "WebApplication1.sln / p: DeployOnBuild = true / p: DeployDefaultTarget = WebPublish / p: WebPublishMethod = FileSystem / p: publishUrl = C: \ test
MSBuild версия 16.0.360 "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Preview \ MSBuild \ Current \ Bin \ msbuild.exe" WebApplication1.sln / p: DeployOnBuild = true / p: DeployDefaultTarget = WebPublish / p: WebPublishMethod = FileSystem / p: publishUrl = C: \ test
Я запустил сборки с файлом wpp.target, который содержал имя моего проекта, но я попробовал его также сСледующий параметр MSBuild: /p:WebPublishPipelineCustomizeTargetFile=C:\Users\username\source\repos\Test\WebApplication1\test.wpp.targets
Обновление
При создании проекта в первый разили после очистки сборки подстановочные знаки в файле * .wpp.targets не работают.Вот пример моего файла * .wwp.targets:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ExcludeFromPackageFolders Include="bin\roslyn">
<FromTarget>Roslyn</FromTarget>
</ExcludeFromPackageFolders>
<ExcludeFromPackageFiles Include="bin\Newtonsoft.*">
<FromTarget>Newtonsoft</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
</Project>
Roslyn исключен, как и ожидалось.Но Newtonsoft. * Не исключены, потому что в названии есть подстановочный знак.
Когда папка obj удаляется вручную или сборка выполняется раньше, чем работают подстановочные знаки.
Что я использовал: MSBuild версия 15.8.166 и MSBuild версия 16.0.360
Пример используемого команды msbuild: "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019\ Preview \ MSBuild \ Current \ Bin \ msbuild.exe "WebApplicationTestForMsBuild.sln / p: DeployOnBuild = true / p: DeployDefaultTarget = WebPublish / p: WebPublishMethod = FileSystem / p: publishUrl = C: \ test
* 1030 вв других проектах мы заметили, что некоторые шаблоны, похоже, работают для большинства файлов, но не для всех.Примером этого является: «
<ExcludeFromPackageFiles Include="bin\*.pdb">
» большинство файлов pdb или исключение, но не все из них.
Я хотел бы использовать его на нашем сервере сборки, где сборка всегда начинается с чистого решения.Эта проблема кажется ошибкой в msbuild, но если вы знаете решение, поделитесь им со мной.
Обновление 2
Шаги одного изтесты, которые я выполнил:
- Создайте новый проект пустого веб-приложения ASP.Net (.NET Framework 4.6.1) в Visual studio Enterprise 2017 (версия 15.9.7).
- Добавьте [ProjectName] .wpp.targets в проект, который содержит ранее описанные данные.
- Установите пакет nuget Newtonsoft.Json (версия 12.0.1) (используется в качестве примера)
- Я запускаю следующую команду в командной строке: «C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ msbuild.exe» [projectName] .csproj / p: DeployOnBuild = true/ p: DeployDefaultTarget = WebPublish / p: WebPublishMethod = FileSystem / p: publishUrl = C: \ test / p: DeleteExistingFiles = True
- Я заглянул в папку C: \ test \ bin и нашел следующие файлы:
- Microsoft.CodeDom.Providers.DotNetCompilerPlatform.DLL
- Newtonsoft.Json.dll
- Newtonsoft.Json.pdb
- [имя_проекта] .dll
- [имя_проекта] .pdb Но Newtonsoft.JsonФайлы .dll и Newtonsoft.Json.pdb не должны публиковаться.
- Я снова запускаю команду msbuild, и она работает как положено.В папке публикации есть только следующие файлы:
- Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
- [projectName] .dll
- [projectName] .pdb
- Я сделал чистое решение в своем экземпляре Visual Studio или с помощью команды msbuild: "C:\ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ msbuild.exe "WebApplication7wpp.csproj -target: Clean
- Еще раз введите команду сборки msbuild и добавьте файлы Newtonsoftснова.
wpp.targets работает, как и ожидалось, когда я не использую подстановочные знаки.