【发布时间】:2018-12-06 02:01:22
【问题描述】:
我有一个针对 .NETFramework 4.0(具有强名称)的程序集 (MYASM.dll)
我想在目标机器上以它是 .NETFramework 的一部分(或整个系统认为它的一部分)的方式部署这个程序集。
我的意思是:
- .NET 运行时看到 System.dll(无需本地部署或提供参考路径)
- 当我在不需要提示路径的情况下执行
<Reference Include="MYASM" />时,MSBuild 会看到它 - 用户可以在 Visual Studio 中创建
Add reference并在没有强/全名的情况下引入<Reference Include="MYASM" />
我已经通过将 1.(显然是 2.)添加到 GAC 来解决它。但这显然还不够。
我已经部分解决了 3. 通过将我的程序集放在一个特殊的文件夹 ([INSTALLFOLDER]\lib) 并设置 registryKey HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0\AssemblyFoldersEx\MyAssemblies
然后我可以添加参考,但我会在我的 csproj 中得到:<Reference Include="MYASM, Version=1.1, Culture=neutral, ..." />,而不是我想要的 <Reference Include="MYASM" />。
使用第二种方法,如果我手动编辑 csproj,一切正常,但我不能要求我的用户这样做。
我应该在这里做什么?
[编辑] 显然我有自己的 MSI 并不明显。但是是的,我有。我不会用魔杖控制用户机器
【问题讨论】:
-
@jonskeet 请帮帮我! :)
-
第一,您不能只将程序集放到 .net 框架中。您需要一个自己的安装程序,它将把它放在每台客户端机器上的 GAC 中。第二,你在这里看到的
<Reference Include="MYASM, Version=1.1, Culture=neutral, ..." />是一个强名称,所以如果你的程序集是强名称,那么你应该添加一个引用。 -
我有一个自定义安装程序可以将程序集放入 GAC。当我删除强名称时,我仍然对
有同样的问题 -
并且 System.dll 也已签名。没有那个
问题。
标签: c# .net visual-studio assemblies gac