我在编辑我的答案,以清楚说明您不需要升级您的.csproj
文件。正如Drew在下面评论的那样,这样做有好处。但是,VS2017将继续使用经典的csproj
文件。此外,VS2017中没有任何内容会为您执行升级。如果您确实希望利用新格式,那么通过下面的步骤应该会有所帮助。
将.csproj
文件升级到新的Visual Studio 2017格式对于简单的类库或控制台项目很容易。
如果您未使用版本控制,请在开始之前确保备份您的csproj
文件,并同时备份Properties/AssemblyInfo.cs
和packages.config
。新的csproj
文件非常棒。在许多项目中,我用十几个代码取代了数百行代码。但是,由于Visual Studio 2017继续支持以前的csproj
文件,这可能是过早优化的一种情况。如果您的解决方案包含许多项目,许多NuGet软件包以及任何定制到csproj
,那么您可能会进行不必要的制作工作项目。
用相应的代码替换.csproj文件的全部内容,如下所示。
类库
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
</PropertyGroup>
</Project>
控制台应用程序
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net462</TargetFramework>
</PropertyGroup>
</Project>
更改<TargetFramework>
属性你需要.NET版本,如.net452,.net46,.net461等
默认情况下,您的项目文件夹中的所有代码将由编译器接收。如果您的项目文件夹之外有代码,则必须按照以前版本的Visual Studio和csproj
中的相同方式明确引用它。
完成上述更改后,将在Visual Studio 2017中加载您的解决方案。此时最基本的项目应该构建。如果不是,您可能需要添加缺少的程序集或项目引用。添加引用与以前版本的Visual Studio中的添加引用非常相似。在Solution Explorer中选择您的项目,右键单击Dependencies
,然后选择Add Reference
。添加您缺少的任何框架或项目引用。
尝试再次构建解决方案/项目。您可能会收到有关重复属性的错误。此错误是因为之前在AssemblyInfo.cs
中定义的属性已移至csproj文件。删除在Properties文件夹下找到的AssemblyInfo.cs
文件应解决这些错误。在删除AssemblyInfo.cs
之前,您应该移动您定义的任何数据。大多数属性可以输入到项目文件的包信息部分。右键单击您的项目名称,选择Package页面,然后输入之前在AssemblyInfo.cs
文件中定义的任何数据。这包括诸如程序集版本,作者,版权等的项目。
下面是显示上一步骤的屏幕快照。
如果您正在使用您的项目中的NuGet包,你需要转移这些新的格式为好。在Visual Studio 2017之前NuGet除了在csproj
中引用外,还依赖于项目根目录中名为Packages.config
的文件。要迁移您的NuGet包引用,请右键单击您的解决方案并加载Nuget包管理器。一旦加载到右上角,点击cog,NuGet程序包管理器选项将加载。选择General
。在包管理下,将选项Default package management format
更改为PackageReference。此时,您必须将所有NuGet软件包手动添加回解决方案。您可以在项目的根文件夹的packages.config
文件中找到所有软件包。一旦你添加了所有的软件包,你可以删除packages.config
文件。
可能的[如何将非核心csproj转换为VS2017格式]的副本(http://stackoverflow.com/questions/42307516/how-to-convert-a-non-core-csproj-to-vs2017-格式) – Jimmy
似乎对非核心项目使用新的'.csproj'是有可能的,有限制,如[显示在此](http://www.natemcmaster.com/blog/2017/03/09/vs2015-to -vs2017-upgrade /) –
是的,对于非Core项目使用新的csproj文件是可能的,但并非必要。请参阅下面的答案。 – Mark