【问题标题】:Build ASP.NET Core in x86 on TFS在 TFS 上以 x86 构建 ASP.NET Core
【发布时间】:2018-05-31 15:56:57
【问题描述】:

我正在尝试通过 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 构建配置。我注意到他们不使用标准的 BuildPlatform 构建变量,我已将其从 Any Cpu 更改为 x86

Build: --configuration $(BuildConfiguration)

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

他们只使用 Debug 或 Release 的 BuildConfiguration。这会产生一个 Any CPU dll,它将在发布服务器上以 x64 格式运行。

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

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

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

【问题讨论】:

  • 您使用的是哪个版本的 TFS?

标签: tfs asp.net-core msbuild


【解决方案1】:

对于 .NET Core 应用程序(netcoreapp* - 不是 .NET Framework 上的 ASP.NET Core),构建期间使用的平台通常无关紧要。

位数由用于加载和运行应用程序的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 属性),以便运行时- 无需创建独立部署即可构建特定应用程序。这通常只需要过滤特定于运行时的资产 - 例如。 runtimes 子文件夹中仅包含 SQLite 本机库的 win-x32 版本,而不是 windows/linux/Mac 等的多个版本。

【讨论】:

    猜你喜欢
    • 2018-08-15
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    相关资源
    最近更新 更多