.net 通过'的存在来区分新旧项目格式是否安全;Sdk';项目元素中的属性?

.net 通过'的存在来区分新旧项目格式是否安全;Sdk';项目元素中的属性?,.net,visual-studio,asp.net-core,visual-studio-code,csproj,.net,Visual Studio,Asp.net Core,Visual Studio Code,Csproj,每次TeamCity build server构建项目时,我都需要增加NuGet包版本。我用PowerShell来做这个 新项目格式允许在proj文件中指定NuGet包信息。但是当没有这样的信息时,NuGet默认为1.0.0version,因此我需要显式地创建1.0.buildCount元素,但我不想更改具有旧格式的项目 使用Sdk属性检测新格式是否安全?最安全的方法是检测项目是否包含TargetFramework或TargetFrameworks(复数)属性 目前,visual studio内

每次TeamCity build server构建项目时,我都需要增加NuGet包版本。我用PowerShell来做这个

新项目格式允许在
proj
文件中指定NuGet包信息。但是当没有这样的信息时,NuGet默认为
1.0.0
version,因此我需要显式地创建
1.0.buildCount
元素,但我不想更改具有旧格式的项目


使用
Sdk
属性检测新格式是否安全?

最安全的方法是检测项目是否包含
TargetFramework
TargetFrameworks
(复数)属性

目前,visual studio内部使用此选项来确定为C#/VB项目加载哪个项目系统,因此即使是通过自定义导入而不是使用新格式的
SDK
属性导入SDK目标的项目,也需要在项目文件中指定其中一个属性,以使其在VS中工作。请参阅

在visual studio 2017 15.6中,无论项目使用新的或经典的csproj格式,都可以从NuGet导入SDK。新格式仅使用
Microsoft.NET.Sdk
Microsoft.NET.Sdk.Web
Sdk

除了
上的
Sdk=“”
属性外,还可以使用专用的
元素或
元素上的
Sdk=“”
属性来引用Sdk。有关更多详细信息,请参阅

请注意,您不必编辑csproj文件,还可以在生成期间将
/p:Version=1.2.3
作为参数传递给所有
dotnet
msbuild
调用