【问题标题】:Build of project with RDLC cannot find custom assembly使用 RDLC 构建项目找不到自定义程序集
【发布时间】:2011-08-03 05:39:15
【问题描述】:

三天来,我一直在努力争取在 VS2010 中构建 RDLC 报告。我想在子报表上的文本项的表达式中从同一解决方案中的另一个项目访问自定义程序集。在包含 RDLC 的项目中有对程序集的引用,我在子报告的属性中添加了对程序集 DLL 的引用,但是当我构建它时,我收到一条错误消息,告诉我找不到文件:

加载代码模块时出错:‘CCCArchive, Version=2.0.847.11068, Culture=neutral, PublicKeyToken=null’。详细信息:无法加载文件或程序集“CCCArchive,Version=2.0.847.11068,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。

RDLC 文件在 XML 中似乎没有程序集的路径信息,我尝试将程序集的副本放在包含 RDLC 的项目下的 bin\Debug 文件夹中,并且与 RDLC 位于同一文件夹中,但没有成功。

从我能找到的一点点来看,看来我可能必须在 GAC 中注册程序集才能使构建工作,但我找不到任何直接确认并将其放入GAC 只是为了让构建运行会很麻烦。

我错过了什么吗?

...吉姆·汉森

【问题讨论】:

  • 刚刚发现了这一点,六年后 Q 和 @Leniel Macaferi 的 A 仍然完全适用......我现在在调试器中运行它。如果 rdlc 运行时总是可以看到它嵌入的程序集,那会好得多,默认情况下......你解决的是构建时间,而不是运行时——>当部署到生产服务器?它使用普通(融合)程序集绑定吗?

标签: visual-studio build compiler-errors reportviewer rdlc


【解决方案1】:

这篇文章描述了一种可能对我有用的解决方案:

Reporting Services – Custom report error (Error while loading code module: MarketingPilot.Framework.dll)

我将错误消息中引用的程序集复制到此文件夹:

C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies

这样做我可以毫无问题地调试应用程序。 :)

【讨论】:

  • x86 版本上为我工作
  • 至少对于 VS 2015,我发现编译器只在该私有文件夹中查找一次,进行构建。在运行时,它从项目的 bin 文件夹中获取正确的程序集。如果方法签名发生变化,它甚至不会抱怨,并且它仍然是完全可调试的。
【解决方案2】:

接受的答案在 Visual Studio 2012 中对我来说效果很好,但同样的解决方案在 Visual Studio 2013 中不起作用。相反,我遵循了 this post 的建议并在此处复制了 dll:

C:\Program Files (x86)\MSBuild\12.0\Bin

【讨论】:

    【解决方案3】:

    按照@rockariotphobia 的回答,Visual Studio 2015 使用:

    C:\Program Files (x86)\MSBuild\14.0\Bin

    【讨论】:

      【解决方案4】:

      我已经尝试了几天,终于成功了:

      1. 首先你必须强输入你的 dll https://msdn.microsoft.com/en-us/library/xc31ft41(v=vs.110).aspx

      2. 使用 Gacutil.exe 在 GAC 中注册它(每次更新 dll 时都必须这样做)。

      现在它可以工作了......可能,在这样做之后我能够找到程序集,但我遇到了安全问题:“本地报告处理期间发生错误。” ...“尝试通过安全透明方法...”。

      我正在使用 .NET 4.5,从 winform 加载报告。

      为了在 AssemblyInfo 中解决这个问题,我必须添加 2 个属性:

                  [assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]
      
                  [assembly: System.Security.AllowPartiallyTrustedCallers]
      

      然后只需保存并在 GAC 中重新安装 dll。

      我希望这些信息对某人有所帮助。

      问候,

      卡里达

      【讨论】:

        猜你喜欢
        • 2013-05-14
        • 2015-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-13
        相关资源
        最近更新 更多