Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
Silverlight 已为COM注册程序集,但仅适用于开发人员计算机_Silverlight_Com_Strongname_.net Assembly - Fatal编程技术网

Silverlight 已为COM注册程序集,但仅适用于开发人员计算机

Silverlight 已为COM注册程序集,但仅适用于开发人员计算机,silverlight,com,strongname,.net-assembly,Silverlight,Com,Strongname,.net Assembly,嘿,我想知道你们是否能看出问题所在/提出解决方案 我有一个用C#构建的COM的dll程序集,我正试图从Silverlight中获取COM对象,使其脱离浏览器。我希望siverlight应用程序能够在计算机之间移动,因此我将所有必需的文件与批处理安装程序放在一个zip中,该批处理安装程序执行以下操作以注册程序集: cd%windir%\Microsoft.NET\Framework\v4.0.30319\ RegAsm.exe“%USERPROFILE%\My Documents\combinem

嘿,我想知道你们是否能看出问题所在/提出解决方案

我有一个用C#构建的COM的dll程序集,我正试图从Silverlight中获取COM对象,使其脱离浏览器。我希望siverlight应用程序能够在计算机之间移动,因此我将所有必需的文件与批处理安装程序放在一个zip中,该批处理安装程序执行以下操作以注册程序集:

cd%windir%\Microsoft.NET\Framework\v4.0.30319\ RegAsm.exe“%USERPROFILE%\My Documents\combinement Clock\windowsHook.dll”/tlb/nologo

我的应用程序找到了程序集,它在我的开发计算机上运行良好,但当我将应用程序移动到测试计算机(连同dll和任何其他必要文件)时,我的批处理文件显示它已成功注册,但应用程序找不到它

但是,当我在测试计算机上用C#重新生成程序集,并用重新生成的dll替换从开发计算机移动的dll时,应用程序发现它很好。如果我的客户希望使用我的应用程序,他们不必使用C#重新构建程序集,这对他们来说会很方便,所以我想知道是否有办法解决这个问题

我研究了一下这个问题,认为可能是因为我的程序集不是强名称程序集,因为我认为C#会自动完成这项工作,所以我尝试在批处理文件中执行此操作,但它无法识别生成加密密钥以赋予程序集强名称所需的'al'和'sn'命令,我试着在教室里做 C#项目属性中的“签名”选项卡,但我遇到了相同的问题。有没有办法解决这个问题


提前感谢

C#不会自动为程序集指定强名称。如果您使用的是Visual Studio,请打开项目的“属性”页,然后查看“签名”选项卡下的内容。选中对程序集进行签名,并生成新的强名称密钥文件。构建您的项目,您应该能够对现有批处理文件执行所需的操作。

使用VS重建时,它工作的原因是它使用/codebase选项运行Regasm.exe。如果您不打算将程序集放入GAC中,则需要此选项。

谢谢,在我尝试codebase之前,显然我没有正确的dll,但现在它显示“所有类型都已成功注册”,并且可以正常工作!谢谢:)谢谢,我现在得到了dll强名称,我想我必须使用批处理文件命令:如果不打算将程序集放入GAC,则不需要DStrong名称。