繁体   English   中英

在引用NetStandard20程序集的Framework461解决方案上使用MSBUILD

[英]Using MSBUILD on a Framework461 solution that references a NetStandard20 assembly

我什至不确定我想做的事情是否可能...

示例代码: 此处

基本上,我已经建立了一个netstandard20类库,根据.NET实现支持列表,该库应该与framework461项目兼容(前提是您拥有.NET Core 2.0 SDK)。

在此处输入图片说明

我可以毫无后顾之忧地建立netstandard20类库,并重新获得DLL(它包含在示例代码中)。

这是问题开始的地方,当尝试运行msbuild .\\netstandard_test.sln来构建framework461项目时,我收到一堆关于(未误)“ netstandard”的错误(我认为是误导性的)。

在此处输入图片说明

但是,如果我运行dotnet build (或从VS2017构建),则一切正常。

我尝试导入各种版本的NetStandard,NetStandard.Library和NetStandard.Library.Framework,以及引用Microsoft.DotNet.BuildTools,但这似乎没有帮助。

有什么方法可以使用msbuild来构建它吗? 我们有一个整体的构建和部署过程,如果可以避免的话,我宁愿不必更改它。 谁知道还有什么地方会出错!

要使用.NET Core或.NET Standard进行构建,您需要使用.NET Core SDK中的dotnet msbuild命令 ,而不仅仅是简单的msbuild

dotnet msbuild .\netstandard_test.sln /p:Configuration=Release

这也将与.NET Framework 4.6.1(和较旧版本)一起使用。

请注意,Microsoft提供了安装脚本,以使在连续集成服务器上轻松安装.NET Core SDK变得容易。

您需要使用MSBuild的最新15. *版本(当前为15.5。*),并确保Visual Studio中安装了“跨平台开发”工作负载。 这将添加所需的组件以定位.NET Core SDK,其中包含MSBuild SDK,如.NET Standard和.NET Core项目使用的Microsoft.NET.SdkMicrosoft.NET.Sdk.Web

然后,您可以在开发人员命令提示符下使用msbuild来构建这些项目。 我建议添加/restore (msbuild> = 15.5。*),以确保基于sdk的项目发生NuGet还原。

由于VS 2017未安装MSBuild的“全局”版本,因此请确保使用VS 2017文件夹中安装的MSBuild版本(请使用msbuild /versionwhere msbuild )。

当您使用包含文件引用或非字符串属性的.resx文件时, dotnet msbuild具有局限性。 另外,它不支持COM引用或构建强命名程序集。 如果需要这些功能中的任何一个,请通过dotnet msbuild (.NET Core CLI)使用msbuild (VS 2017)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM