Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何注册要加载的非强名称程序集,就像它在GAC中一样?_.net_Gac_Fusion - Fatal编程技术网

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

.net 如何注册要加载的非强名称程序集,就像它在GAC中一样?,.net,gac,fusion,.net,Gac,Fusion,我们的一个合作伙伴向我们提供了需要从应用程序访问的程序集。不幸的是,这不是强名称,因此我们无法将其安装到GAC。我们不能把它和我们的可执行文件放在同一个地方 有解决办法吗 编辑:这将是一个仅用于测试的临时解决方案,当他们进入RC时,我们将有一个强名称程序集。此时您有几个选项 第一种方法是将程序集放置在具有 第二个是指定您希望CLR在app.config文件中使用探测引用的子目录 最后,您可以使用各种类型动态加载程序集,但我想说,在这种情况下,这是一个非常糟糕的想法,因为您有程序集,并且您有想要在

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

有解决办法吗


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

此时您有几个选项

第一种方法是将程序集放置在具有

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


最后,您可以使用各种类型动态加载程序集,但我想说,在这种情况下,这是一个非常糟糕的想法,因为您有程序集,并且您有想要在其中使用的具体类型。当您想要替代某些抽象的实现时,通常会使用这样的后期程序集加载,但这里的情况似乎不是这样。

另一个解决方案是将以下内容添加到machine.config文件中:

<runtime>
  <developmentMode developerInstallation="true"/>  
</runtime>


并将DEVPATH=path添加到系统环境变量。

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

可以使用Visual Studio IDE将DataSystem.snk生成为文件

那你就可以跑了

gacutil.exe -i DataSystem.dll

我找到的签署和注册程序集的最佳和最直接的解决方案是:


为了让这项工作更容易进行,我将CD刻录到一些目录,如C:\temp-这对我来说似乎工作得更好,可能是因为在这样的地方文件权限更容易访问。

出于好奇,为什么你不能把它放在和你的可执行文件相同的地方?我想没有访问源代码的权限?我也很好奇为什么它不能放在同一个目录中。是否存在与您必须使用的另一个库同名的版本控制问题?在我的情况下,我不能这样做,因为一个程序集引用了另一个没有强名称的程序集。谢谢,Evalds。保存了我的%%%。我必须将DLL集成到SSIS脚本任务中,但供应商没有提供强名称DLL。你的把戏成功了。
gacutil.exe -i DataSystem.dll