Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在引用网络标准项目的WPF项目中使用MSBuild_C#_.net_Wpf_Msbuild_Visual Studio 2017 - Fatal编程技术网

C# 如何在引用网络标准项目的WPF项目中使用MSBuild

C# 如何在引用网络标准项目的WPF项目中使用MSBuild,c#,.net,wpf,msbuild,visual-studio-2017,C#,.net,Wpf,Msbuild,Visual Studio 2017,我们正在使用WPF接口创建一个新的Windows应用程序。出于各种原因,我们正试图使所有支持的库都在NETStandard2.0上运行 因此WPF项目Foo引用了来自同一解决方案的.NET标准2.0项目 我的问题是如何在TeamCity构建服务器上构建解决方案 msbuild在生成解决方案时出错(在Visual Studio 2017中工作正常) C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFx.targets(268,9

我们正在使用WPF接口创建一个新的Windows应用程序。出于各种原因,我们正试图使所有支持的库都在NETStandard2.0上运行

因此WPF项目Foo引用了来自同一解决方案的.NET标准2.0项目

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

msbuild在生成解决方案时出错(在Visual Studio 2017中工作正常)

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

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

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 restore。[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)

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

错误消息表示您正在使用.NET Framework 4.0的MSBuild尝试编译程序集

您应该使用编译.NET标准2.0库,并注意需要在生成计算机上安装

dotnet msbuild /p:Configuration=Release
在CI服务器上远程安装
.NET Core 2.0 SDK
的一种简单方法是执行脚本

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 restore。[Src\Foo\Foo.csproj]


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

从新的构建服务器开始解决了这个问题。我猜旧版本上的msbuild、visual studio或SDK或其他版本太多了

谢谢,我试试看。它当前正在使用vs 2017的最新msbuild。我不明白是什么原因导致引用v4.0.xxxx。外部程序失败:C:\Program Files(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe(返回代码为1)如何“生成解决方案”?这有点令人困惑,因为您似乎表示它“在VS 2017中正确构建”,但当它无法构建时,您在做什么?dotnet msbuild无法构建framework 4.6.x项目,对吗?在我的实验中,dotnet msbuild可以很好地构建其他9个项目,但随后会挂起wpf项目。我正在尝试使用TeamCity在构建服务器上构建该项目,以实现持续集成。@Reg您是否尝试过直接使用msbuild构建wpf项目,而不使用TeamCity服务?如果它只能使用在TeamCity build Server上没有的MSBuild进行生成,那么问题应该更多地与TeamCity相关。此外,您能否与我们分享帮助我们重现此问题的详细步骤?