2011-06-29 78 views
6

我正在開發一個nuget包,它將設置當前項目以使用我公司的程序集版本控制標準。除了添加自定義構建步驟之外,我已經完成了我想要的所有功能(迄今爲止)。使用nuget包添加自定義構建步驟

從歷史上看,這是通過直接編輯.csproj文件並將一些新標籤添加到xml中手動完成的。這是...

  • 地產集團
  • 目標

這實際上增加了他們成功,但我已經通過編輯XML而不是通過EnvDTE對象做到了在$項目參數install.ps1。但是我收到一條消息,詢問我是否想放棄我的更改。

在我進行更改並刪除彈出框之前,我已將$project.Save()添加到我的腳本中,並且我只是讓一個人告訴我該項目已更改並詢問我是否要重新加載它。哪個更好,但還不完美。

有沒有更好的方法來做到這一點?

回答

9

您也可以使用NuGetPowerTools包由大衛·福勒(的NuGet主要開發人員)編寫的。在https://github.com/davidfowl/NuGetPowerTools

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

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

退房的代碼以獲得更多信息:

Install-Package NuGetPowerTools 

的依賴將它添加到你的包,然後在install.ps1腳本,你可以調用。

+1

請注意未來的讀者:NuGet的新版本通過在包的'tools'文件夾中添加一個'.targets'文件來自動啓用。 – Crisfole

+1

謝謝。我想在未來,我將從「NuGet X.Y ...開始」。 – Kiliman

+0

是的。他們在發展這個工具方面做得很好。 – Crisfole

3

Scott Hanselman在mix11上做到了這一點。他的技術是卸載項目(使用DTE),使用PowerShell進行修改,然後重新加載(再次使用DTE)。

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

+2

我敢打賭,斯科特在他的演示中使用了「poop」這個詞。 –

相關問題