tfs - 在 TFS 上以 x86 构建 ASP.NET Core

标签 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 构建配置,其中包含恢复/构建/发布任务。我注意到他们不使用标准的 BuildPlatform 构建变量,我已将其从 Any Cpu 更改为 x86

Build: --configuration $(BuildConfiguration)

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

他们只使用 BuildConfiguration,即 Debug 或 Release。这会生成一个 Any CPU dll,它将在发布服务器上作为 x64 运行。

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

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

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

最佳答案

对于 .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 属性),以便在不创建独立部署的情况下构建特定于运行时的应用程序。这通常只需要过滤特定于运行时的 Assets - 例如仅在 runtime 子文件夹中包含 SQLite native 库的 win-x32 版本,而不是 windows/linux/Mac 等的多个版本。

关于tfs - 在 TFS 上以 x86 构建 ASP.NET Core,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47866237/

相关文章:

c# - 为什么 asp.net mvc 模型 Binder 读取 View 模型属性?

c# - .NET Core项目中 `wwwroot`文件夹的图标怎么改?

razor - 确保将所有* .cshtml文件设置为 “Content”进行构建操作

tfs - 将 dotCover 与 TFS 集成

git - 使用 GIT 推送项目的部分内容

visual-studio - TFS 未获取所有解决方案文件

npm - DotNet Core 2.0 WebDeploy 对 npm build 的调用在 Publish 上不起作用

visual-studio - error : The imported project was not found. 确认Import声明中的表达式正确,文件存在于磁盘上

git - 如何让 git 和 tfs 在 MSVS2013 中并行工作?

tfs - 无法获得排队到 Controller 的 Visual Studio 2013 负载测试