如何将 MSBuild 与引用网络标准项目的 WPF 项目一起使用

Reg*_*Reg 5 .net c# msbuild wpf visual-studio-2017

我们正在创建一个带有 WPF 界面的新 Windows 应用程序。由于各种原因,我们正在尝试使所有支持库都在网络标准 2.0 上运行。

因此,WPF 项目 Foo 引用同一解决方案中的 .NET Standard 2.0 项目。

我的问题是如何获取在 TeamCity 构建服务器上构建的解决方案。

msbuild 在构建解决方案时给出错误(在 Visual Studio 2017 中工作正常)。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFx.targets(268,9):错误 MC1000:未知构建错误,“无法解析对程序集”netstandard 的依赖关系,版本=2.0.0.0,文化=中性,PublicKeyToken=cc7b13ffcd2ddd51',因为它尚未预加载。使用 ReflectionOnly API 时,必须通过 ReflectionOnlyAssemblyResolve 事件预加载或按需加载依赖程序集。[Src\Foo\Foo.csproj]

如果我使用 nuget 将 NetStandard.Library 添加到 Foo 项目,那么我会从 msbuild 中收到不同的错误(在 Visual Studio 中仍然可以正常工作)。

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\NuGet\15.0\Microsoft.NuGet.targets(178,5): 错误:您的project.json 没有运行时部分。您应该将 '"runtimes": { "win": { } }' 添加到您的project.json,然后重新运行 NuGet 恢复。[Src\Foo\Foo.csproj]

没有projects.json 文件。

它与 15.0 版本的 msbuild 一起运行

外部程序失败:C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MsBuild.exe(返回代码为 1)

Reg*_*Reg 1

从全新的构建服务器开始解决了这个问题。我猜想 msbuild 和 Visual Studio 或 SDK 或旧版本上的版本太多了。