2

我正在尝试将 dll 安装到 GAC,我收到此错误:

程序集没有强命名或未使用最小密钥长度签名。

代码如下。我该如何解决这个问题?

    <Product Id="4C76EAE3-148A-4597-A994-0178693C5B25" Name="MySolutionInstaller" Language="1033" Version="1.0.0.0" Manufacturer="Me" UpgradeCode="a5e6cbeb-18be-4f7e-9ab5-f1adb1d947eb">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate />
    <Feature Id="ProductFeature" Title="MySolutionInstaller" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
    </Feature>
  </Product>

  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <!--<Directory Id="INSTALLFOLDER" Name="MyDLLCoreLibrary">-->
        <Directory Id="ProductDirectory" Name="MySolutionInstaller">
          <Directory Id="GAC" Name="GAC"/>
        </Directory> 
      </Directory>
    </Directory>
  </Fragment>

<Fragment>
<ComponentGroup Id="ProductComponents">
      <Component Id='DataLibraryGAC' Directory="GAC" Guid='a3b57886-4d27-4e4c-a28f-60a061cdd12d'>
        <File Id='DataDLLGAC' Name='MyProject.Data.dll' Source='C:\projects\MyProject.Data\bin\Debug\MyProject.Data.dll' 
              KeyPath="yes" Assembly=".net" />
        <!--<RemoveFile Id="RemoveDataDLLGAC" Name="My.Data.dll" On="uninstall" />-->
      </Component>

    </ComponentGroup>
  </Fragment>
4

2 回答 2

2

此错误表明您的程序集未使用强名称密钥进行签名。我们需要使用 .snk 文件对程序集进行签名,以便在 GAC 中安装它。选中此项以签署程序集。

于 2013-05-17T12:06:04.347 回答
0

解决该错误的另一种方法是不将其放入 GAC。而是将您的程序集放在您的 EXE 可以找到它的地方。最简单的布局都在一个文件夹中。但是还有其他选项,例如自动探测子文件夹,正如运行时如何定位程序集所解释的那样。

不安装到 GAC 的一个优点是您仍然可以将安装程序设计为无需管理员即可工作。

于 2013-05-17T15:02:31.853 回答