我正在开发一个nuget包,它将设置当前项目以使用我公司的程序集版本标准。除了添加自定义构建步骤之外,我已经做到了我想做的一切(到目前为止)。
历史上,这是通过直接编辑.csproj文件并在xml中添加几个新标记来手动完成的。这些是......
它实际上已成功添加它们,但我通过编辑xml而不是通过 install.ps1 中 $ project 参数中的EnvDTE对象来完成它。但是我收到一条消息,询问我是否要放弃我的更改。
在我进行更改之前,我已经在我的脚本中添加了$project.Save()
并且摆脱了弹出窗口,我只是告诉我项目已经更改并询问我是否要重新加载它。哪个更好,但仍然不太完美。
有更好的方法吗?
答案 0 :(得分:9)
您还可以使用由David Fowler(NuGet首席开发人员)编写的NuGetPowerTools包。
Install-Package NuGetPowerTools
将其作为依赖项添加到您的包中,然后在install.ps1脚本中,您可以调用:
Add-Import "\Path\To\Import.targets" $project.ProjectName
Set-MSBuildProperty "MyPropertyName" "MyPropertyValue" $project.ProjectName
$value = Get-MSBuildProperty "MyPropertyName" $project.ProjectName
查看https://github.com/davidfowl/NuGetPowerTools处的代码了解详情。
答案 1 :(得分:3)
Scott Hanselman在mix11做到了这一点。他的技术是卸载项目(使用DTE),使用PowerShell修改它,然后重新加载它(再次使用DTE)。