WRT.拟议的欺骗:由于这里的问题暗示了相关的问题,我宁愿认为这不是一个骗局.
首先,我确实阅读了"复制本地"和项目参考的最佳实践是什么?(也是这个)我无论如何都要试试这个,但是得到一般反馈似乎是必要的,因为关于这个东西的文档非常糟糕,我只是在VS2010上,也许他们在新版本中改变了一些东西很高兴知道.
其次,我只对这个问题的项目引用感兴趣,因为我读过GAC的程序集处理方式不同而GAC与我的问题无关.
第三,在阅读了建议的欺骗之后,但更多的是@Albireo这里的好答案,它似乎也很重要,区分文件依赖,其中依赖引用dll汇编文件和项目依赖(即我问的是什么) about),其中依赖项引用项目并隐式引用该项目的输出文件.
/x1 可执行1项目/x2 对于可执行2项目/lib 对于所有的dll程序集该DLL组件都已经Copy Local设置false了自己的项目引用,因为它们都建立在相同的输出目录.
2个可执行项目已设置Copy Local到true所有他们直接引用的DLL组件项目引用,这样的DLL将被复制到/x1 /x2分别.
现在的问题是.到被DLL文件不能直接通过一个可执行的项目引用,但只传递地通过引用的程序集:请问组件,这是只有通过其他组件引用传递性,被复制到输出文件夹的可执行文件的,当"复制本地" 被设定为第一次装配时是真的吗?
例: …
我有引用ProjectB(ClassLibrary)的ProjectA(WPFApplication ).在ProjectB内部我有wpf窗口,它使用来自ThirdParty.dll的控件,因此我从ProjectB引用.
问题是它没有在ProjectA的输出文件夹中找到ThirdParty.dll,并且引发了xaml解析运行时异常.GAC中没有ThirdParty.dll."本地复制"设置为true.如果我在ProjectA的输出文件夹中手动添加该库,它也可以工作,如果我在我的cs文件中使用了ThirdParty.dll somwhere 它也可以工作.
我怎么解决这个问题?
我有以下情况:
解决方案
- Project 1: Web_Application (VB.NET Web Application)
- Project 2: Code_Library (VB.NET DLL, Referenced in Project 1, References My_Reports, My_SQL)
- Project 3: My_SQL (Embedded SQL scripts C# DLL, referenced in Code_Library)
- Project 4: MyReports (C# dll, depends on ReportViewer),
referenced in Code_library, copyLocal = true
unfortunately depends on
- Microsoft.ReportViewer.WebForms.dll (copyLocal = true)
which depends on
- Microsoft.ReportViewer.Common.dll (copyLocal = true)
- Microsoft.ReportViewer.ProcessingObjectModel.dll (copyLocal = true)
- System.Web.DataVisualization.dll (copyLocal = true)
Run Code Online (Sandbox Code Playgroud)
ReportViewer dll在MyReports项目中设置为localcopy
在Code_Library中,MyReports设置为localcopy
在Web_Application中,Code_Library和MyReports设置为localcopy
这给出了以下非常不满意的结果: …