我正在编辑我的答案,以明确指出您不需要升级您的.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版本非常相似。选择解决方案资源管理器中的项目,在“依赖项”上右键单击,然后选择“添加引用”。添加任何您缺少的框架或项目引用。
尝试再次构建解决方案/项目。您可能会收到有关重复属性的错误。这是因为先前在AssemblyInfo.cs
中定义的属性已移动到csproj文件中。删除“属性”文件夹下的AssemblyInfo.cs
文件应该可以解决这些错误。在删除AssemblyInfo.cs
之前,您应该移动任何您已定义的数据。大多数属性都可以输入到项目文件的“包信息”部分中。右键单击项目名称,选择“Package”页,然后输入之前在AssemblyInfo.cs
文件中定义的任何数据。这包括程序集版本、作者、版权等项。
下面是显示上述步骤的屏幕截图。
![enter image description here](https://istack.dev59.com/Wy03V.webp)
如果您在项目中使用任何NuGet包,您也需要将其移动到新格式。在Visual Studio 2017之前,NuGet依赖于项目根目录中名为Packages.config
的文件以及csproj
中的引用。为了迁移您的NuGet包引用,请右键单击解决方案并加载Nuget包管理器。一旦加载,在右上角点击齿轮,NuGet包管理器选项将加载。选择“常规”。在“包管理”下更改选项默认包管理格式
为PackageReference。此时,您将不得不手动将所有NuGet包添加回您的解决方案。您可以在项目根文件夹的packages.config
文件中找到所有包。添加完所有包后,您可以删除packages.config
文件。
.csproj
,但有一些限制,详见此处。 - Panagiotis Kanavos