与以前的版本相比,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以外的其他/旧框架版本?
答案 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。