Dre*_*kes 32 upgrade csproj visual-studio visual-studio-2017
到目前为止,VS2017已将多个project.json
/ .xproj
基于项目正确转换为新.csproj
格式.
我还想将新.csproj
格式.csproj
用于以前仅针对.NET Framework的旧项目(即它们不能与dnx/dotnet CLI一起使用).
似乎即使一个项目仍然只针对.NET Framework,<PackageReference>
一个易于编辑的.csproj
文件的好处似乎值得(希望不是太大)麻烦.
这可以直接与Visual Studio 2017一起使用吗?
如果没有,需要采取哪些手动步骤?
Mar*_*ark 32
我正在编辑我的答案,以明确表示您不需要升级.csproj
文件.正如Drew在下面评论的那样,这样做有好处.但是,VS2017将继续使用经典csproj
文件就好了.此外,VS2017中没有任何内容可以为您执行升级.如果您希望利用新格式,请参阅下面的内容应该有所帮助.
.csproj
对于简单的类库或控制台项目,将文件升级到新的Visual Studio 2017格式很容易.
如果你没有使用版本控制,在开始之前一定要备份你的csproj
文件,两者都是Properties/AssemblyInfo.cs
,和packages.config
.新csproj
文件很棒.在许多项目中,我用十几个代码替换了数百行代码.但是,由于Visual Studio 2017继续支持以前的csproj
文件,这可能是过早优化的情况.如果您的解决方案包含许多项目,那么许多NuGet包以及任何自定义项csproj
都可能会进行不必要的make work项目.
使用适当的代码替换.csproj文件的全部内容,如下所示.
班级图书馆
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
控制台应用
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net462</TargetFramework>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
将<TargetFramework>
属性更改为您需要的.NET版本,如net452,net46,net461等.
默认情况下,编译器将拾取项目文件夹中的所有代码.如果您的项目文件夹外有代码,则必须以与以前版本的Visual Studio相同的方式显式引用它csproj
.
完成上述更改后,在Visual Studio 2017中加载解决方案.此时应构建最基本的项目.如果不是,您可能需要添加缺少的程序集或项目引用.添加引用与在以前版本的Visual Studio中执行此操作非常相似.在解决方案资源管理器中选择您的项目,右键单击Dependencies
,然后选择Add Reference
.添加您缺少的任何框架或项目引用.
尝试再次构建您的解决方案/项目.您可能会收到有关重复属性的错误.此错误是因为先前定义的属性AssemblyInfo.cs
已移至csproj文件.删除AssemblyInfo.cs
在"属性"文件夹下找到的文件应该可以解决这些错误.在删除之前,AssemblyInfo.cs
您应该移动您定义的任何数据.大多数属性都可以在项目文件的包信息部分中输入.右键单击项目名称,选择"包"页面,然后输入先前在AssemblyInfo.cs
文件中定义的任何数据.这包括诸如汇编版本,作者,版权等项目.
下面是显示上一步的屏幕截图.
如果您在项目中使用任何NuGet包,则还需要将它们移动到新格式.在Visual Studio 2017之前Packages.config
,除了引用之外,NuGet还依赖于项目根目录中指定的文件csproj
.要迁移NuGet包引用,请右键单击您的解决方案并加载Nuget包管理器.一旦加载到右上角,单击cog,将加载NuGet包管理器选项.选择General
.在"包管理"下,将选项更改Default package management format
为PackageReference.此时,您必须手动将所有NuGet包添加回您的解决方案.您可以packages.config
在项目的根文件夹中找到该文件中的所有包.将所有软件包添加回来后,您可以删除该packages.config
文件.
the*_*kip 21
我已经创建了一个适用于csproj文件的工具:https://github.com/hvanbakel/CsprojToVs2017
你可以在csproj上运行它,它将转换文件并创建旧的备份.
Ale*_*xey 10
为此,可以使用.NET Upgrade Assistant 。
安装(将版本替换为最新版本,请检查NuGet.org):
dotnet tool install --global upgrade-assistant --version 0.4.355802
Run Code Online (Sandbox Code Playgroud)
启动交互过程,并在第2步“将项目文件转换为SDK样式”后退出:
upgrade-assistant upgrade <project>.csproj
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15268 次 |
最近记录: |