"Could not load file or assembly" Net462 应用引用 NetStandard1.5 库时出错。但是为什么?



我试图弄清楚我在此示例项目中可能做错了什么。当我的net462应用程序引用netstandard1.5库时出现错误。该应用程序依赖于"System.Collections.Immutable": "1.3.0",根据Nuget,它针对NetStandard 1.0。库取决于"NETStandard.Library": "1.6.0".

我设置这些项目中的任何一个都错了吗?我将非常感谢对此的任何见解...

这是他们的项目.json:

.app:

{
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"SomeLibrary": "1.0.0-*"
},
"frameworks": {
"net462": {
"dependencies": {
"System.Collections.Immutable": "1.3.0" 
}
}
},
"version": "1.0.0-*"
}

图书馆

{
"buildOptions": {
"allowUnsafe": true
},
"dependencies": {
},
"frameworks": {
"netstandard1.5": {
"dependencies": {
"NETStandard.Library": "1.6.0"
}
}
},
"version": "1.0.0-*"
}

库只有这个接口:

using System.Collections.Generic;
namespace SomeLibrary
{
public interface SomeInterface
{
int GetValue(KeyValuePair<string, int> somePair);
}
}

应用实现此接口并调用具体类:

public class Program
{
public static void Main(string[] args)
{
var concreteObject = new ConcreteImplementation();
var answer = concreteObject.GetValue(new KeyValuePair<string, int>("key", 33));
Console.WriteLine(answer);
}
}

class ConcreteImplementation : SomeInterface
{
public int GetValue(KeyValuePair<string, int> somePair)
{
return somePair.Value;
}
}

如果我尝试运行该应用程序,则会出现以下错误:

{"Could not load file or assembly 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.":"System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}

堆叠:at ErrorExample.Consumer..ctor() at ErrorExample.Program.Main(String[] args) in ..ErrorExamplesrcErrorExampleProgram.cs:line 11

我在这里错过了什么? 谢谢!

我不太确定为什么会发生这种情况,但是使用netstandard1.4作为库项目的TFM可以解决您的问题。换句话说,库project.json应该如下所示:

{
"buildOptions": {
"allowUnsafe": true
},
"dependencies": {
},
"frameworks": {
"netstandard1.4": { // <-- replace "netstandard1.5" with "netstandard1.4" or lower
"dependencies": {
"NETStandard.Library": "1.6.0"
}
}
},
"version": "1.0.0-*"
}

作为当前的一般经验法则:避免使用netstandard1.5netstandard1.6:根据您的要求使用netstandard1.4和更低,直到您明确被迫。等待netstandard2.0的发布。您可以在 MSDN 博客中阅读有关它的详细信息 artible 关于 .NET Standard。这是一个常见问题解答。

最新更新