如何注册要加载的非强名称程序集,就像它在GAC中一样?

Anz*_*rio 7 .net gac fusion

我们的合作伙伴为我们提供了一个我们需要从我们的应用程序访问的程序集.不幸的是,这不是强名称,因此我们无法将其安装到GAC.我们不能将它放在与可执行文件相同的位置.

这有解决方案吗?

编辑:这将是一个临时解决方案,仅用于测试,当他们去RC时,我们将有一个强名称的程序集.

cas*_*One 5

那时你有几个选择.

第一种方法是将程序集放在一个目录中,该目录具有程序集名称(没有扩展名),该目录是应用程序目录的子目录.

第二种是使用探测元素指定您希望CLR使用探测元素探测 app.config文件中的引用的子目录.

最后,您可以使用Assembly类上的各种Load方法动态加载程序集,但我会说在这种情况下这是一个非常糟糕的主意,因为您有程序集,并且您有要在其中使用的具体类型.像这样的延迟组装加载通常在你想要替换某些抽象的实现时使用,这在这里似乎并非如此.


Eva*_*ans 5

使用反编译和签名的解决方法(使用 Visual Studio 的开发人员命令提示):

ildasm.exe /all /typelist /out=DataSystem.il DataSystem.dll
ilasm.exe /dll /optimize /key=DataSystem.snk DataSystem.il
Run Code Online (Sandbox Code Playgroud)

DataSystem.snk 可以使用 Visual Studio IDE 生成为文件 http://www.bloggerbychris.com/2011/09/29/signing-a-net-assembly-in-visual-studio/

那么你应该能够运行

gacutil.exe -i DataSystem.dll
Run Code Online (Sandbox Code Playgroud)