7

我正在开发一个 nuget 包,它将设置当前项目以使用我公司的程序集版本控制标准。除了添加自定义构建步骤之外,我已经完成了我想要的一切(到目前为止)。

从历史上看,这是通过直接编辑 .csproj 文件并将几个新标签添加到 xml 中手动完成的。这些都是 ...

  • 物业集团
  • 目标

它实际上成功地添加了它们,但我是通过编辑 xml 而不是通过install.ps1中$project参数中的 EnvDTE 对象来完成的。但是我收到一条消息,询问我是否要放弃我的更改。

在我进行更改之前,我已经添加$project.Save()到我的脚本中并且摆脱了弹出窗口,我只是得到一个告诉我项目已更改并询问我是否要重新加载它的人。哪个更好,但仍然不是很完美。

有一个更好的方法吗?

4

2 回答 2

10

您还可以使用 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上的代码以获取更多信息。

于 2011-06-30T14:42:56.647 回答
3

Scott Hanselman 在 mix11 做到了这一点。他的技术是卸载项目(使用 DTE),使用 PowerShell 修改它,然后重新加载它(再次使用 DTE)。

http://channel9.msdn.com/Events/MIX/MIX11/FRM09

于 2011-06-29T14:01:59.723 回答