Решение ASP.Net Core опубликовало неверный проект

Я создал новый базовый проект ASP.Net и настроил его в системе управления версиями, которая публикуется в Azure при регистрации. Я смог правильно все настроить, и все работало нормально.

Однако затем я добавил проект библиотеки классов в решение, и теперь вместо публикации проекта моего веб-сайта задача MSBuild пытается опубликовать мою библиотеку классов, что, конечно, не удается.

Строка в команде развертывания:

"%MSBUILD_PATH%" "%DEPLOYMENT_SOURCE%\MySolution.sln" /nologo /verbosity:m /p:deployOnBuild=True;AutoParameterizationWebConfigConnectionStrings=false;Configuration=Release;UseSharedCompilation=false;publishUrl="%DEPLOYMENT_TEMP%"

И когда он запускается, он сначала строит проект моделей, что нормально:

 D:\Program Files (x86)\dotnet\dotnet.exe build "D:\home\site\repository\MySolution.Models" --configuration Release --no-dependencies

Но затем он пытается опубликовать и этот проект:

D:\Program Files (x86)\dotnet\dotnet.exe publish "D:\home\site\repository\MySolution.Models" --output "D:\local\Temp\PublishTemp\MySolution.Models71" --configuration Release --no-build
D:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing.targets(149,5): error : Can not find runtime target for framework '.NETStandard,Version=v1.6' compatible with one of the target runtimes: 'win8-x86, win7-x86'. Possible causes: [D:\home\site\repository\MySolution.Models\MySolution.Models.xproj]

Какой это неправильный проект (это должен быть веб-проект). Я не могу найти какие-либо файлы, которые содержат настройки для этого или настройки в самом файле решения.

Что мне нужно сделать, чтобы опубликовать правильный проект?

1 ответ

Решение

Я смог решить эту проблему, выполнив это в два этапа.

Сначала удалите deployOnBuild=True и publishUrl=[snip] из команды msbuild. Это означает, что этот шаг создаст проект, но не будет публиковаться.

Затем добавьте новый шаг, который выполняет публикацию.

Для этого я сначала создал новую переменную для хранения местоположения dotnet.exe:

IF DEFINED DOTNET_PATH goto DotNetPathDefined
SET DOTNET_PATH=%ProgramFiles(x86)%\dotnet\dotnet.exe
:DotNetPathDefined

Затем добавьте следующее для публикации веб-проекта:

call :ExecuteCmd "%DOTNET_PATH%" publish "%DEPLOYMENT_SOURCE%\MySolution.Web" --framework netcoreapp1.0 --output "%DEPLOYMENT_TEMP%" --configuration Release --no-build
IF !ERRORLEVEL! NEQ 0 goto error

Затем он публикует все файлы во временную папку развертывания, которая затем развертывается с помощью шага KuduSync.

Другие вопросы по тегам