1

我發現了一些關於如何將程序集嵌入到一個主DLL中的非常酷的文章。如果要將DLL存儲在CRM數據庫中,這是必需的。 AppDomain.CurrentDomain.AssemblyResolve in dynamics crm自動嵌入引用程序集

另一種方法是使用ILMerge,我沒興趣。

在我的情況,我要嵌入的DLL是從相同的解決方案。嵌入程序集的技巧是創建一個文件夾,添加現有項目並選擇你想要使用的DLL。然後,您轉到DLL的屬性並將它們標記爲嵌入式資源。

問題是,引用的DLL將不會更新,直到我構建解決方案之後。所以,目前,我在構建項目,將/ bin DLL複製到項目組件文件夾,然後再次重建項目。更糟的是,我有不同的解決方案配置:調試,開發,QC,UAT和生產。其中更改/ bin目錄我從中獲取DLL。

那麼,是否有辦法在項目建成時自動刷新項目文件夾 - 我可以根據當前的解決方案配置更改DLL的來源?

+1

如果右鍵單擊任何項​​目並轉至屬性,則可以爲任何生成配置創建自定義生成步驟(如複製文件)或更改輸出目錄。您也可以指定額外的文件夾來查找依賴庫。 – Egor

+0

@Egor - 我能夠使用預構建步驟將'xcopy'特定項目'$(OutDir)'的DLL拷貝到我的嵌入式組件文件夾中。有權訪問'$(OutDir)'文件夾使我無法創建單獨的部署腳本。謝謝! –

回答

0

幾個月來,我一直在構建解決方案,將DLL複製到一個EmbeddedAssemblies文件夾中,然後重建項目。這真的很痛苦,因爲我不得不寫一個.BAT文件將調用的MSBuild我整個的.sln,然後做一個XCOPY,然後調用的MSBuild對的.csproj

更糟糕的是,由於我無法控制TFS如何忽略文件,因此源代碼控制不斷看到這些文件正在改變,我必須明確地將它們從檢入中排除。我的隊友通常不那麼體貼。

終極,我再看看ILMerge。在內部,它幾乎完成了與我完全相同的事情。我轉到了ILMerge,從那以後我一直很開心。