【发布时间】:2010-10-07 13:01:35
【问题描述】:
我们使用 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 文件\Syncfusion\Essential Studio\7.1.0.21\Assemblies\3.5\Syncfusion.XlsIO.Base.dll' 或其依赖项之一。 模块 预计将包含一个程序集 清单。
C:\程序 文件\MSBuild\Microsoft\VisualStudio\v9.0\ReportingServices\Microsoft.ReportingServices.targets(24,2): 错误 MSB4062: “Microsoft.Reporting.RdlCompile”任务 无法从程序集中加载 Microsoft.ReportViewer.Common, 版本=9.0.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a。可以 不加载文件或程序集 'Microsoft.ReportViewer.Common, 版本=9.0.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a' 或 它的依赖项之一。模块 预计将包含一个程序集 显现。确认 声明是正确的,并且 程序集及其所有依赖项是 可用。
引用的组件 'Syncfusion.XlsIO.Base' 不能是 找到了。
这些错误是针对一个有一个有问题的程序集引用的项目。当我尝试构建整个解决方案时,当然会因为这个错误而出现更多错误。还有另外两个项目与其他程序集引用有相同的问题。我有一个 VS 似乎无法解析的引用程序集列表:
- Microsoft.ReportViewer.Common
- Microsoft.ReportViewer.WinForms
- Syncfusion.Compression.Base
- Syncfusion.Core
- Syncfusion.XlsIO.Base
Syncfusion 组件来自第 3 方组件包。其他两个与 Microsoft ReportViewer 组件有关。
引用已通过“添加引用”窗口添加,位于 .NET 选项卡中,因此我认为这没有任何可疑之处。在程序集引用的属性窗口中,Culture、Description、Path、Runtime Version 或 Strong Name 中没有值。版本说 0.0.0.0 和 Resolved 是 False。我想很明显 VS 无法解析引用。我的问题是为什么???我为这个问题挠了挠头。这仅发生在服务器上,该解决方案在我的机器和我的同事机器上都构建得很好。装配参考属性在我们的机器上很好。
我已经尝试卸载 第三方组件(当然是在服务器上),然后重新安装。没有帮助。我尝试修复 VS2008 安装。没有帮助。试图从 源代码管理 中检索 早期版本(我知道以前在服务器上构建过),但我收到了相同的错误消息。我检查了文件权限,一切正常。我的想法不多了...
我该如何解决这个问题?
16.02.2009 更新:
我试图比较我的电脑和服务器上的 dll 的 ildasm 输出(请参阅我写的评论),并且在我看来是评论。我必须承认我根本不明白为什么会有差异,所以也许有人可以向我解释一下?
我还尝试在服务器上运行病毒扫描。没有帮助。尝试删除 reference,然后通过浏览磁盘上的dll 读取它。没用。
17.03.2009 更新:
我找到了解决方案!罪魁祸首是熊猫杀毒软件的TruPrevent 模块。禁用模块后,一切正常! =)
我在fuslogvw.exe 及其生成的日志的帮助下发现了这一点。谷歌搜索结果,偶然发现this blog entry.。希望这可以帮助其他人。
【问题讨论】:
标签: c# tfsbuild assembly-resolution