【问题标题】:Azure DevOps release pipeline - How to resolve Strong Name Validation issueAzure DevOps 发布管道 - 如何解决强名称验证问题
【发布时间】:2020-05-21 18:10:06
【问题描述】:

我有一个 C# exe,它引用了其他一些 dll,并且这些 dll 使用强名称密钥进行签名。当我在本地系统中执行此操作时,它工作正常。但是当我从 Azure 发布管道调用相同的 exe 时,它​​给了我以下错误。

System.Security.SecurityException:强名称验证失败。 (HRESULT 异常:0x8013141A)

我为所有引用的 dll 尝试了 sn.exe -Vr "dll path"。并且还在 exe 的 app.config 中尝试了命令 bypassTrustedAppStrongNames enabled="false" & "true"。但两者都没有帮助。

任何人都可以为此提出解决方案。提前致谢。

【问题讨论】:

    标签: c# dll azure-devops azure-pipelines


    【解决方案1】:

    您可以尝试在 csproj 文件中搜索 System.Management.Automation 引用并将其替换为 <Reference Include="System.Management.Automation" />

    关于这个,请参考这个case有类似的问题。

    【讨论】:

      【解决方案2】:

      您可以尝试通过在Application Configuration File 中添加以下 sn-p 来禁用应用程序级别的强名称验证

      <configuration>  
        <runtime>  
          <bypassTrustedAppStrongNames enabled="true" />  
        </runtime>  
      </configuration>  
      

      欲了解更多信息,您可以查看Microsoft documentation page

      【讨论】:

      • 嗨 Stelios,已经尝试过了,但没有帮助。如前所述,在本地它可以正常工作,但是当它从管道调用时会出错。
      • @Tinz habe 你试图在服务器级别禁用它?正如我附加给您的 Microsoft 文档页面中所描述的那样?禁用所有应用程序的强名称绕过功能 - 子主题
      【解决方案3】:

      我不确定您是否有权跳过托管代理的验证。因此,您可以创建自己的代理或

      • 删除依赖项的强名称或使用无强名称重建它们。
      • 签署您的申请。

      【讨论】:

      • 我已添加“C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools\x64\sn.exe” -Vr "{dll 路径}" 在调用 exe 之前在托管代理命令行任务中显示“为程序集添加了验证条目”,但再次显示强名称验证失败。
      • 跳过验证是一种本地解决方法。强名称为您的程序集签名。
      猜你喜欢
      • 1970-01-01
      • 2019-08-04
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 2020-11-01
      相关资源
      最近更新 更多