代码之家  ›  专栏  ›  技术社区  ›  Luis Filipe

DSL工具:如何以弱命名创建DLL

  •  0
  • Luis Filipe  · 技术社区  · 16 年前

    我需要添加一个弱命名引用到此项目。

    我无法使DLL名为强,因为我无法重新编译它。

    我试图通过转到DSL和DslPackage项目属性并取消选中Sigining选项卡中的“为程序集签名”选项,使我的DSL工具项目DLL名为弱。

    然后我编译它。 错误列表给出了以下错误

    "gacutil.exe" exited with code 1
    

    查看VS2005输出窗口,我看到正在调用gacutil

    C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\gacutil.exe -nologo -i "C:\Academy\ResearchAndDevelopment\FrontendGenerator\DslPackage\bin\Debug\vantyx.FEGenerator.DslPackage.dll"
    

    之后,我使用命令提示符,gacutil.exe错误显示如下:

    Z:\>"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\gacutil.exe" -nologo -i "C:\Academy\ResearchAndDevelopment\FrontendGenerator\DslPackage\bin\Debug\vantyx.FEGenerator.DslPackage.dll"
    Failure adding assembly to the cache: Attempt to install an assembly without a strong name
    

    我不知道为什么以及如何调用gacutil.exe。 我查看了项目和解决方案属性,没有配置调用gacutil.exe的选项。 我甚至在每个文件中查找“gacutil.exe”,但什么也没找到。

    因此,我一直试图使我的DSL工具DLL命名为弱DLL,但我不能。

    关于我如何解决这个问题有什么帮助吗?

    多谢各位,

    2 回复  |  直到 16 年前
        1
  •  1
  •   Rui Craveiro    15 年前

    将运行时绑定与反射一起使用是一个很好的解决方案,而且很有效。除此之外,我实现的另一个解决方案是启动一个单独的AppDomain,让AppDomain加载程序集并运行您想要的任何方法。这种方法的缺点是额外的复杂性和性能。在VisualStudio的进程空间中实际启动一个单独的.net应用程序时,必须知道自己在做什么。好的一面是,只要小心一点,你可以一路得到类型安全性。

        2
  •  1
  •   Luis Filipe    15 年前

    除了上面写的答案之外, Visual Studio的所有外接程序必须具有强名称。

    可以通过在运行时加载程序集并使用反射调用方法来解决一些问题。

    当做 卢斯