Jul*_*ian 22 upgrade csproj visual-studio-2017
我在VS2015有两个项目
当我用VS2017打开项目1时,它很好地迁移到新的csproj格式.
Project 2适用于VS2017,但我喜欢将此csproj转换/迁移/更新为新的项目文件格式,以便受益于新的csproj功能(多目标,无大文件列表,可读csproj,csproj中的NuSpec信息等)
我怎么能这样做?我在VS2017中找不到一个选项.
使用:VS2017 RTM
你可能值得花时间看看这些.对于更复杂的项目类型,它看起来无法完成,但是控制台和库似乎是可升级的 http://www.natemcmaster.com/blog/2017/03/09/vs2015-to-vs2017-upgrade/
https://github.com/NickCraver/PerfBenchmarks/commit/53c3013b1774056363dcab867bceb1b89ce9592c
关于添加更复杂的sdk类型,您可以观看此github问题.
https://github.com/dotnet/sdk/issues/491
VS 中没有内置选项,因为更干净的 csproj 主要用于 .NET Core 项目。如果没有在项目文件中进行一些努力和进一步的自定义,它不能完全与所有其他项目类型一起使用。例如,对于新的 SDK 样式(新样式).csproj,连接代码生成器或嵌套在 Winforms 或 WPF 应用程序中可能无法开箱即用。这些通常可以通过根据需要更新元数据来解决:
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
请注意,Update 属性在这里很关键 - 您不想再次将文件包含在 ItemGroup 中,您只想更新其现有(或缺少的)元数据。
对于某些项目类型,还存在一些注意事项,在基于 SDK 的 csproj 与旧项目中,目标不会按预期导入。这取决于您的目标的编写方式,但其中一个例子是使用 VSSDK 构建 VSIX 项目(VS 扩展),这在基于 SDK 的项目中确实很难正确执行。
如果您想尝试这种转换,Nate McMaster 的博客文章是一个极好的资源。他涵盖了从头开始和就地转换文件的内容。我发现大多数时候从新的干净的 .csproj 开始并添加所需的任何解决方法都非常顺利。
还值得指出的是,普通 csproj 文件中的许多垃圾只是生成的内容,进行一些手动编辑可以大大有助于清理它。例如,使用通配模式可以在大型项目文件中保存数百行。无论如何,这是基于 SDK 的项目工作方式的一部分 - 它们只是在 SDK 中执行 glob,因此它不会显示在 .csproj 中,但其工作原理几乎相同。例如,如果您想包含一个文件夹下的所有 C# 文件(递归地),您可以执行以下操作:
<ItemGroup>
<!-- Include all C# files under the SampleFolder and any child folders -->
<Compile Include="SampleFolder\**\*.cs" />
<!-- Include all C# files under this project's root: -->
<Compile Include="**\*.cs" />
<ItemGroup>
Run Code Online (Sandbox Code Playgroud)
匹配**任何递归文件夹路径。
Visual Studio 行为存在一些差异,因为基于 SDK 的项目的新项目系统的工作方式与旧的 .csproj 项目系统非常不同。例如,SDK项目将自动检测磁盘上的文件何时发生变化,并在项目中添加/删除它们;在重新加载项目之前,old-csproj 不会在 VS 中更新它们。
如果您确实在任何地方都使用通配符,您将遇到与基于 SDK 的 csproj 类似的问题,其中某些文件未连接到其代码生成器或正确嵌套。如上所述,您可以使用该Update=属性来修复特定文件(甚至更特定的全局文件)以使元数据恢复到相同状态。
| 归档时间: |
|
| 查看次数: |
6702 次 |
| 最近记录: |