C# Sign net核心类库

C# Sign net核心类库,c#,.net-core,sign,C#,.net Core,Sign,是否可以对类库netcore dll进行签名 我使用以下代码创建了一个简单的net core类库项目: public class Test { public static string TestMethod(string test) { return "Hello " + test+ "!"; } } static void Main(string[] args) { Console.WriteLine("Start..

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

我使用以下代码创建了一个简单的net core类库项目:

public class Test
{

    public static string TestMethod(string test)
    {
        return "Hello " + test+ "!";
    }
}
    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();
    }
我转到项目属性选项卡签名,选中“为程序集签名”选项并选择了一个pfx文件

完成了这个项目,一切都很好

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

public class Test
{

    public static string TestMethod(string test)
    {
        return "Hello " + test+ "!";
    }
}
    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 build
但它在这里失败了,错误如下:

error : PFX signing not supported on .NET Core

是否可以对net core dll进行签名?如果是,我做错了什么?

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

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

$sn-k asdf.snk

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

SNK和PFX的区别是什么?看看这个答案:

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

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