簡體   English   中英

添加對GAC程序集的引用遞歸復制非GAC相關程序集(c#Visual Studio 2008)

[英]Add Reference to GAC Assembly copies Non GAC dependent assemblies recursively (c# Visual Studio 2008)

這是我的應用程序deplyoment:c:\\ Program Files \\ Product \\ API.dll(在Gac中注冊)
c:\\ Program Files \\ Product \\ ApiImpl1.dll(Non Gac)
c:\\ Program Files \\ Product \\ ApiImpl2.dll(Non Gac)
C:\\ ConsoleApplication \\ TestApi.exe

Api.dll是應用程序的Facade,實現了“c:\\ Program Files \\ Product \\”Api.Dll在GAC中注冊,並且具有DLL的程序集解析器,位於“c:\\ Program Files \\ Product \\”Api.dll參考ApiImpl1.dll和ApiImpl2.dll。

問題是在ConsoleApplication中我添加對Api.dll Visual Studio的引用,將ApiImpl1.dll和ApiImpl2.dll重復復制到項目目標。 (雖然CopyLocal = False)我通過瀏覽添加引用到“c:\\ Program Files \\ Product \\ API.dll”

據我所知,我有幾個解決方案:
1)在GAC中注冊ApiImpl1.dll和ApiImpl2.dll(不接受,我有大會解析器)
2)添加到“.Net Add Reference”注冊表,“c:\\ Program Files \\ Product”(不解決)
3)添加到“.Net Add Reference”注冊表,“c:\\ windows \\ Assembly \\ gac_msil \\ Api.dll(解決它,但這是一個糟糕的解決方案)
4)手動更改Api.dll Reference的ConsoleApplication.csproj和Remove HintPath屬性。 (不可接受,因為我會有很多客戶使用這個API)

你應該總是在GAC中擁有與GAC相關的dll ......如果需要在那里,其他人也需要。

問題是雖然Visual Studio知道在哪里通過引用找到這些dll文件,但是如果dll文件不在項目目錄中(因此副本),運行時的應用程序將不知道在哪里查看。


編輯
如果你有Assembly Resolver,是否有必要將API.dll放入GAC? 也許如果該DLL不在GAC中,Visual Studio將不會復制其他文件。 我很確定這是因為根DLL在GAC中,但依賴的DLL不是。

暫無
暫無

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

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