我们使用VS2008 SP1在C#中编码.我们有一个运行Team System Server 2008的服务器,我们将其用于源代码控制,任务等.服务器也是Team Build的构建机器.这已经很好地工作了很长时间.直到目前.当我们尝试构建一个引用一个外部程序集的项目时,我们会收到这些错误消息(通过Team Build,以及物理登录和通过Visual Studio进行常规构建时):
C:\ WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets:警告MSB3246:已解决的文件包含错误的图像,没有元数据或无法访问.无法加载文件或程序集 'C:\ Program Files\Syncfusion\Essential Studio\7.1.0.21\Assemblies\3.5\Syncfusion.XlsIO.Base.dll'或其依赖项之一.该模块应该包含一个程序集清单.
C:\ Program Files\MSBuild\Microsoft\VisualStudio\v9.0\ReportingServices\Microsoft.ReportingServices.targets(24,2):错误MSB4062:无法从程序集Microsoft加载"Microsoft.Reporting.RdlCompile"任务. ReportViewer.Common,Version = 9.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a.无法加载文件或程序集'Microsoft.ReportViewer.Common,Version = 9.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.该模块应该包含一个程序集清单.确认声明是否正确,以及程序集及其所有依赖项是否可用.
找不到引用的组件"Syncfusion.XlsIO.Base".
这些错误适用于一个有问题的程序集引用的项目.当我尝试构建整个解决方案时,由于这个问题,当然会有更多错误.还有另外两个项目与其他程序集引用具有相同的问题.我有一个VS无法解决的引用程序集列表:
Microsoft.ReportViewer.Common
Microsoft.ReportViewer.WinForms
Syncfusion.Compression.Base
Syncfusion.Core
Syncfusion.XlsIO.Base
Syncfusion程序集来自第三方组件包.另外两个与Microsoft ReportViewer组件有关.
引用已通过"添加引用"窗口添加到.NET选项卡中,因此我认为没有任何可疑之处.在程序集引用的属性窗口中,Culture,Description,Path,Runtime Version或Strong Name中没有值.版本说0.0.0.0,Resolved是False.我猜很明显,VS无法解析引用.我的问题是为什么??? 我在这个问题上摸不着头脑.这只发生在服务器上,解决方案在我的机器和我的同事机器上构建得很好.我们的机器上的装配参考属性很好.
我试图卸载的第三方组件(当然在服务器上),然后然后重新安装.没有帮助.我试图修复与VS2008安装.没有帮助.试图从源代码控制中检索早期版本(我知道之前已在服务器上构建),并且我收到了相同的错误消息.我检查了文件权限,一切似乎都是有序的.我的想法已经不多了......
我该如何解决这个问题?
更新16.02.2009:
我试图在我的电脑和服务器上比较 dll的ildasm输出(参见我写的评论),并且在一行中有一个小的区别,对我来说似乎是一个评论.我必须承认,我不明白为什么会有所不同,所以也许有人可以向我解释一下?
我也尝试在服务器上运行病毒扫描.没有帮助.试图除去的参考,然后重新进行添加通过浏览到磁盘上的DLL它.没工作.
更新17.03.2009:
我找到了解决方案!罪魁祸首是Panda Antivirus的TruPrevent模块.禁用模块后,一切正常!=)
我在fuslogvw.exe及其生成的日志的帮助下发现了这一点.用Google搜索结果,偶然发现了这篇博客文章..希望这可以帮助别人.