缩短的MSBuild格式是否与旧的.NET版本兼容?

时间:2017-10-08 15:58:37

标签: .net msbuild visual-studio-2017

与以前的版本相比,Visual Studio 2017时使用的MSBuild文件可以大幅缩短。如上所述,例如in a blogpost

  

为了使MSBuild格式清晰易读,删除了许多样板配置。

实际上,当您创建新的.NET Standard项目时,生成的.csproj文件默认只包含几行:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard1.4</TargetFramework>
  </PropertyGroup>

</Project>

在同一个VS中创建普通的.NET Framework项目时,.csproj文件仍然与以前一样长,包含多个<PropertyGroup><ItemGroup>元素,一些默认的BCL程序集,调试设置的定义等。

通过手动编辑缩短的源代码来进行表面测试,例如.NET Framework 2.0似乎没有导致任何问题(至少,不是错误消息)。不过,我现在想知道:缩短的MSBuild格式是否可以用于定位除.NET Standard以外的其他/旧框架版本?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用此语法来支持任何支持的平台。它只给你一些额外的默认值。

但是,某些功能可能会丢失 - 比如设计师对经典EF,ASP.NET和WPF的支持。虽然这些项目应该编译,但您可能遇到一些困难,需要自定义的msbuild hacks才能使它们正常工作。

但如果您只是编写库,控制台应用程序/ Windows服务,那么您应该没问题。

如果要使用dotnet CLI进行编译,则需要至少定位.NET 4.如果您定位较低版本,例如net35项目只能在windows或mono的msbuild上使用开发人员命令提示符中的msbuild进行编译。

即使是便携式目标,也存在一些变通方法。例如,Netwonsoft.Json最近从具有共享c#源文件的多个csproj和sln文件的复杂设置转移到single consolidated csproj file that multitargets to many frameworks