使用nuget包添加自定义生成步骤

使用nuget包添加自定义生成步骤,nuget,envdte,Nuget,Envdte,我正在开发一个nuget包,它将设置当前项目以使用我公司的组装版本控制标准。除了添加自定义构建步骤之外,我已经让它顺利地完成了我想要的一切(到目前为止) 历史上,这是通过直接编辑.csproj文件并在xml中添加几个新标记来手动完成的。这些是 地产集团 目标 它实际上成功地添加了它们,但我是通过编辑xml而不是通过install.ps1中$project参数中的EnvDTE对象来完成的。但我突然收到一条消息,问我是否要放弃我的更改 在我进行更改之前,我已经将$project.Save()添加

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

历史上,这是通过直接编辑.csproj文件并在xml中添加几个新标记来手动完成的。这些是

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

在我进行更改之前,我已经将
$project.Save()
添加到我的脚本中,这样就消除了弹出窗口,我只收到一条消息,告诉我项目已更改,并询问我是否要重新加载它。哪一个更好,但仍然不太完美


有更好的方法吗?

斯科特·汉斯曼在mix11上这样做了。他的技术是卸载项目(使用DTE),使用PowerShell修改它,然后重新加载(再次使用DTE)


您还可以使用David Fowler(NuGet首席开发人员)编写的NuGetPowerTools软件包

将其作为依赖项添加到包中,然后在install.ps1脚本中,可以调用:

Add-Import "\Path\To\Import.targets" $project.ProjectName
Set-MSBuildProperty "MyPropertyName" "MyPropertyValue" $project.ProjectName

$value = Get-MSBuildProperty "MyPropertyName" $project.ProjectName

有关更多信息,请查看上的代码。

未来读者注意:NuGet的新版本会自动启用此功能,方法是将
.targets
文件添加到软件包的
工具
文件夹中。谢谢。我想在将来,我会从“从NuGet版本X.Y开始…”开始。他们在改进该工具方面做得很好。@Crisfole:“启用此”:启用什么?;)支持集成构建目标。
Add-Import "\Path\To\Import.targets" $project.ProjectName
Set-MSBuildProperty "MyPropertyName" "MyPropertyValue" $project.ProjectName

$value = Get-MSBuildProperty "MyPropertyName" $project.ProjectName