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

时间:2017-10-10 20:46:13

标签: c# .net wpf msbuild visual-studio-2017

我们正在创建一个带有WPF界面的新Windows应用程序。出于各种原因,我们试图使所有支持库在net standard 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:未知的构建错误,'无法解析对程序集的依赖关系&# 39; netstandard,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51'因为它还没有预装。使用ReflectionOnly API时,必须通过ReflectionOnlyAssemblyResolve事件按需预加载或加载相关组件。' [SRC \富\ 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没有&# 39; t有一个运行时段。你应该添加'"运行时":{" win":{}}'到你的project.json然后重新运行NuGet还原。 [SRC \富\ Foo.csproj]

没有一个projects.json文件。

它运行15.0版本的msbuild

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

2 个答案:

答案 0 :(得分:0)

  

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

错误消息表明您正在使用MSBuild for .NET Framework 4.0来尝试编译程序集。

您应该使用dotnet msbuild来编译.NET Standard 2.0库,并注意您需要在构建计算机上安装.NET Core 2.0 SDK

dotnet msbuild /p:Configuration=Release

在CI服务器上远程安装.NET Core 2.0 SDK的一种简单方法是执行dotnet-install脚本。

  

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ NuGet \ 15.0 \ Microsoft.NuGet.targets(178,5):错误:您的project.json没有运行时段。你应该在你的project.json中添加'“runtimes”:{“win”:{}}',然后重新运行NuGet恢复。 [SRC \富\ Foo.csproj]

此错误表示您的构建服务器在您的服务器上具有使用project.json格式的.NET Core SDK的预览版本。您需要.NET Core 2.0 SDK才能构建。

答案 1 :(得分:0)

从新的构建服务器开始解决了这个问题。我想有太多版本的msbuild和visual studio或SDK或旧版本的东西。