簡體   English   中英

VS2010構建腳本以將DLL打包到MSI並在GAC中注冊

[英]VS2010 build scripts to package DLLs into an MSI & register in the GAC

我需要跨多個平台打包和發布.NET控件庫,並且有關於如何通過構建腳本和VS2010配置自動化此部署(或盡可能高效)的問題。

控件庫將作為Silverlight版本(SL 3.0,4.0,5.0的單獨版本)和WPF版本(.NET3.5 / .NET4.0的單獨版本)發布。 我還需要指定相同庫的發行版和試用版。 試用版將在代碼中與預處理程序語句TRIAL區分開來。 試用版和完整版都將以RELEASE模式編譯。

我想知道如何以最有效的方式實現這一目標。 我的VS2010解決方案目前有一個WPF(.NET 4.0)項目和一個SL(SL 4.0)項目。

  • 我是否需要為缺少的版本創建更多的csproj項目,例如.NET 3.5和SL 3.0和5.0?
  • 我希望為所有Silverlight DLL創建一個MSI,為所有WPF dll創建一個MSI。 我是否需要為編譯為試用的版本創建更多MSI? 對於每個版本的.NET或Silverlight框架,單獨的MSI怎么樣?
  • 是否可以使用build.targets或構建腳本實現上述部署包裝?

基本上,如果我為所有上述組合手動創建MSI並執行完全重建,但是在發布更新時這也是一個費力的過程。 我正在尋找有關如何使用構建腳本,build.targets,MSI配置或上述組合實現此目的的建議。

最后,在重新分發控制庫時,理想情況下安裝應該在GAC中進行注冊。

歡迎提出任何意見/建議。

最好的祝福,

如果您要發布不同版本的框架,那么您將需要不同的項目。 您可能可以在運行時切換目標框架,但是有很多變量,當您將它們全部弄清楚並進行測試時,您可以輕松創建其他項目。

我認為投資安裝工具(例如Installshield)非常值得您花錢,該工具內置支持您想要的其他功能。

我相信您應該能夠使用各種交換機和最終用戶密鑰在單個installshield項目中完成所有需求(以觸發試用或實際安裝),但您可能會考慮根據您的許可方案分離試用版和實際版。

更新

您也可以通過純VS2010解決方案來解決這個問題,它只是更復雜。

根據您的目標,您將需要總共5個項目,每個解決方案將有2個配置,一個用於試用版本(設置預處理器定義)。

您可以使用包含所有5個項目的單個構建解決方案,因為您可以在VS安裝項目中單獨引用每個項目的輸出。

在發布時,您必須運行構建兩次,一次用於發布,一次用於試用,但您可以使用MSBuild輕松自動執行此操作。

我們為減輕發布流程負擔所做的工作是創建一個小型數據庫來保存有關產品的配置信息(解決方案,項目文件和程序集的位置)以及構建應用程序的小型UI應用程序,首先在必要時更改版本,然后通過visual studio構建過程構建安裝程序解決方案。

我記得的一個非常重要的注意事項是,當我輸入上述內容時:在某一點(可能已修復),無法通過MSBuild構建Visual Studio 2010安裝項目,這就是我們通過devenv構建的原因。 COM。

為了后人的緣故,我正在記錄我提出的解決方案,這要歸功於competent_tech的非常豐富的答案。

使用msdos批處理文件解決如下問題。

  • 傾倒了#If Trial開關的想法。 相反,組件由licx文件許可,因此試驗版本與發布版本相同。 這意味着只有一個開發工作的解決方案,構建輸出源自
  • 創建批處理文件以使用MSBuild重建Silverlight和WPF輸出項目,切換toolversion以創建多個版本
  • 將DLL復制到Nuget樣式目錄結構,例如Build / lib / net40,Build / lib / sl4,Build / lib / sl5等......
  • 混淆構建的庫
  • XCopy示例項目到Build / examples /
  • 使用Powershell編輯示例項目以引用新的混淆輸出。

有關刪除/重新添加引用和使用PowerShell 編輯項目文件的信息 ,請參閱以下問題和解答

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM