签署网核类库

时间:2017-07-06 11:50:02

标签: c# .net-core sign

是否可以签署一个类库netcore dll?

我使用以下代码创建了一个简单的网络核心类库项目:

L2

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

建立项目,一切都很好。

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

public class Test
{

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

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

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

    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();
    }

然后我做

<RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>

一切都很好,然后:

dotnet restore

但它在这里失败了:

dotnet build

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

1 个答案:

答案 0 :(得分:2)

使用SNK文件而不是PFX文件来签名程序集。

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

$ sn -k asdf.snk

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

SNK和PFX有什么区别?查看此答案:snk vs. code signing certificate

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