Решение 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.