【问题标题】:Sign net core class library签网核心类库
【发布时间】:2017-12-10 09:52:55
【问题描述】:

是否可以对类库 netcore dll 进行签名?

我创建了一个简单的net core类库项目,代码如下:

public class Test
{

    public static string TestMethod(string test)
    {
        return "Hello " + test+ "!";
    }
}

我去了项目属性,标签签名,检查了“签署程序集”选项并选择了一个 pfx 文件。

构建项目,一切正常。

然后我使用以下代码创建了一个 net core 控制台应用程序项目:

    static void Main(string[] args)
    {
        Console.WriteLine("Start...");

        try
        {
            string s = Test.TestMethod("123");

            Console.WriteLine("Retrieved: " + s);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }

        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }

为了引用该项目,我添加了该项目作为参考。左键单击,添加参考,项目并选择项目。在 IDE 中执行时一切正常。

然后我想构建我的 exe,所以我去 csproj 并添加以下行:

<RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>

那我做

dotnet restore

一切正常,然后:

dotnet build

但它在这里失败并出现错误:

error : PFX signing not supported on .NET Core

是否可以签署网络核心 dll?如果是这样,我做错了什么?

【问题讨论】:

  • .NET Core 构建链lacks the infrastructure to deal with PFX signing。当前的实现很难以独立于平台的方式提供。您仍然可以使用密钥为程序集提供强名称,但不能使用证书对其进行签名。至少不使用 .NET Core 构建工具。

标签: c# .net-core sign


【解决方案1】:

使用 SNK 文件而不是 PFX 文件对程序集进行签名。

通过打开开发者命令工具创建 SNK。

$ sn -k asdf.snk

这将创建 asdf.snk 文件,您可以使用该文件对程序集进行签名。 dotnet build 现在可以工作了。

SNK 和 PFX 有什么区别?看到这个答案:snk vs. code signing certificate

简短的回答是 PFX 更安全。好消息是您可以在稍后使用 PFX 对您的程序集进行签名。同时,SNK 签名将帮助您克服许多障碍,包括 dotnet 构建和允许程序集由其他强名称程序集加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多