在TFS上的x86中构建ASP.NET Core

时间:2017-12-18 10:15:52

标签: tfs asp.net-core msbuild

我正在尝试通过TFS构建和部署ASP.NET Core 2.0.3 Web API。

在Visual Studio中,我已将Release配置为以x86平台为目标。 我还确保了csproj中的以下内容:

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <Platforms>x86</Platforms>
</PropertyGroup>

在本地构建会在bin \ x86 \ Debug \ netcoreapp2.0

文件夹中生成预期的输出

在TFS中,我有一个带有恢复/构建/发布任务的新.NET CORE构建配置。我注意到他们没有使用我从Any Cpu更改为x86的标准BuildPlatform构建变量

Build: --configuration $(BuildConfiguration)

Publish: --configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)

他们只使用BuildConfiguration,它是Debug或Release。这会导致Any CPU dll在发布服务器上以x64身份运行。

我尝试将-r win7-x86添加到publish命令,但这导致发布了一个自包含的部署,这不是我想要的。

我尝试在构建命令中添加-r win7-x86,这会导致生成正确的dll,但是publish命令会执行它自己的隐式构建,并且不会使用上一个构建任务的输出。 / p>

如何让TFS为Web应用程序发布x86 DLL(依赖于框架)?

1 个答案:

答案 0 :(得分:2)

对于.NET核心应用程序(netcoreapp* - 而不是.NET Framework上的ASP.NET核心),构建期间使用的平台通常并不重要。

通过用于加载和运行应用程序的dotnet.exe主机版本确定位数。例如。 C:\Program Files\dotnet\dotnet.exe(64位)或C:\Program Files (x86)\dotnet\dotnet.exe(32位)。

RuntimeIdentifier MSBuild属性(-r交换机设置的内容)仅与自包含部署相关,但还有一个选项可指定--self-contained false(=&gt; {{1 MSBuild属性)以便在不创建自包含部署的情况下构建特定于运行时的应用程序。通常只需要过滤特定于运行时的资产 - 例如只包含win-x32版本的SQLite本机库,而不是SelfContained子文件夹中的windows / linux / Mac等多个版本。