Я пытаюсь создать и развернуть веб-API ASP.NET Core 2.0.3 через TFS.
В Visual Studio я настроил Release для платформы x86. Я также обеспечил следующее в csproj:
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<Platforms>x86</Platforms>
</PropertyGroup>
Сборка локально производит ожидаемый результат в папке bin \ x86 \ Debug \ netcoreapp2.0
В TFS у меня есть новая конфигурация сборки .NET CORE с задачами восстановления / сборки / публикации. Я заметил, что они не используют стандартную переменную сборки BuildPlatform, которую я изменил с Any Cpu на x86.
Build: --configuration $(BuildConfiguration)
Publish: --configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)
Они используют только BuildConfiguration, то есть Debug или Release. Это приводит к созданию библиотеки DLL Any CPU, которая будет работать как x64 на сервере выпуска.
Я пробовал добавить -r win7-x86 в команду публикации, но это привело к публикации автономного развертывания, чего я не хочу.
Я пробовал добавить -r win7-x86 к команде сборки, что приводит к созданию правильной dll, но команда публикации выполняет собственную неявную сборку и не использует выходные данные предыдущей задачи сборки.
Как я могу заставить TFS публиковать x86 DLL (зависит от платформы) для веб-приложения?
Какую версию TFS вы используете? — person Daniel Revell schedule 19.12.2017
Для приложений .NET Core (
netcoreapp*
— не ASP.NET Core в .NET Framework) платформа, используемая во время сборки, обычно не имеет значения.Разрядность определяется версией хоста
dotnet.exe
, который используется для загрузки и запуска приложения. Например.C:\Program Files\dotnet\dotnet.exe
(64 бит) илиC:\Program Files (x86)\dotnet\dotnet.exe
(32 бит).Свойство
RuntimeIdentifier
MSBuild (то, что задает переключатель-r
) актуально только для автономных развертываний, но есть также возможность указать свойство--self-contained false
(=>SelfContained
MSBuild), чтобы приложение, зависящее от времени выполнения, создавалось без создания автономного развертывание. Обычно это требуется только для фильтрации ресурсов, специфичных для времени выполнения — например, включайте только win-x32 версии собственной библиотеки SQLite вместо нескольких версий для windows / linux / Mac и т. д. в подпапкуruntimes
.