繁体   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