MSBuild, как создать пакет веб-развертывания для приложений .NET Core без создания zip-файла - PullRequest
1 голос
/ 08 октября 2019

Итак, я пытаюсь создать приложение .NET Core с MSBuild и заставить его создать папку для веб-развертывания, но без автоматического помещения в zip-файл. Я могу сделать это для приложений .NET Framework, используя /p:WebPublishMethod=Package и /p:PackageAsSingleFile=false, это создает ту же структуру папок, но без добавления ее в zip-файл. Однако в приложении .NET Core этот флаг, кажется, игнорируется и всегда упаковывает конечный пакет в архив.

Причина, по которой я не хочу, чтобы он был заархивирован, заключается в том, что мне нужно добавить ряд "пользовательских" файлов в сборку, прежде чем я смогу развернуть ее. Я не могу добавить файлы во время самой сборки, потому что у нас есть несколько разных клиентов, и все они используют одно и то же «базовое» программное обеспечение, а затем необходимо добавить файлы, специфичные для клиента, после слов. Поэтому я хочу создать «базовое» программное обеспечение, затем иметь возможность скопировать выходную папку, добавить файлы, специфичные для клиента, и затем сжать эту сборку для развертывания в IIS. Это экономит огромное количество времени, потому что альтернативой является создание новой сборки для каждого клиента, хотя 95% программного обеспечения одинаково.

Так что есть другой способ сделать это с приложениями .NET Core?

Я тестировал MSBuild через командную строку. Решение имеет сочетание веб-сайтов .NET Framework и .NET Core asp.net. Это то, что я запускаю:

msbuild.exe "Solution.sln" /nologo /nr:false /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=false /p:SkipInvalidConfigurations=true /p:PreBuildEvent="" /p:PostBuildEvent=""  /p:BasePackageLocation="C:\Temp\BuildOutput" /p:platform="any cpu" /p:configuration="release"

Это работает для веб-сайтов .NET Framework, но веб-сайты .NET Core продолжают архивироваться

И просто обратите внимание, что BasePackageLocationявляется пользовательским свойством, которое устанавливает для PackageLocation значение «$ (BasePackageLocation) \ $ (MSBuildProjectName) \», чтобы каждый веб-сайт помещался в собственный подкаталог

1 Ответ

0 голосов
/ 09 октября 2019

Так есть ли другой способ сделать это с помощью приложений .NET Core?

Извините, но ответ может быть отрицательным. Это одна проблема о публикации .net core проектов, об этом было сообщено команде разработчиков, до исправления может пройти долгий путь.

Для режима web deploy package в .net core, вы получите WebApplication.deploy.cmd в той же папке, где существует .zip, многие команды в xx.cmd связаны с xx.zip, поэтому не рекомендуется вручную что-то делать с unzip.

Я предлагаю, чтобы мы могли отследить проблему там (DC), и я обновлю ответ, если будет какое-либо обновление или исправление:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...