升级csproj文件为vs2017工程格式(SDK样式)

csproj文件在VS2017后格式变更为SDK样式。framework项目如果需要源链接等等功能,需要进行手动升级。

升级过程

升级需要Project2015To2017Nuget包。

> dotnet tool install --global Project2015To2017.Migrate2019.Tool

安装完成,执行如下命令,也可以参考该工具的readme自定义:

> dotnet migrate-2019 wizard "D:\Path\To\My\TestProject.sln"

注意点

  • 项目csproj文件需要自己看下有没有明显错误,我这里出现了后期生成事件复制了多个节点的错误。

  • 格外需要注意后期生成事件会出现部分宏不生效导致的执行错误问题(我这里vs2019下)。参考官方库的issue这个issue
    这里的原因是官方换了执行生成事件命令的节点。解决方法:在项目属性页把生成事件剪切出来,保存项目,再复制进去,这时候生成事件就会出现在正确的节点下。

修改前的节点如下:

<PropertyGroup>
    <PreBuildEvent>"$(ProjectDir)PreBuildEvent.bat" "$(ProjectDir)..\" "$(ProjectDir)" "$(TargetDir)" 0 />
</PropertyGroup>

修改后的节点大概如下:

<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
    <Exec Command="&quot;$(ProjectDir)PreBuildEvent.bat&quot; &quot;$(ProjectDir)..\&quot; &quot;$(ProjectDir)&quot; &quot;$(TargetDir)&quot; &quot;$(DevEnvDir)&quot; 1 0" />
</Target>

自己编辑的话也可以,但是需要注意节点的位置变了

构建版本号

之前使用Jenkins change-assembly-version-plugin的来构建版本号,原理大概就是遍历AssemblyInfo.cs文件来替换版本。
现在可以直接修改 .csproj文件如下:

<AssemblyVersion>1.2.3.4</AssemblyVersion>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>

之前的AssemblyInfo.cs就可以直接删除了。

如果使用Jenkins构建版本的话,构建参数增加AssemblyVersion类似下面这样,可以参考这里

MSBuild.exe /p:AssemblyVersion=5.4.3.0
posted @ 2023-01-07 23:56  时风拖拉机  阅读(340)  评论(0编辑  收藏  举报