引用.net标准类库

时间:2016-09-06 19:10:28

标签: asp.net .net xamarin portable-class-library .net-standard

希望有人能够提供帮助。

我有一系列最近已转换为.NetStandard 1.3 PCL的项目,这样做是为了让我公司的前端项目与新的移动项目共享一个通信层(Xamarin) )。

当我们的WPF项目中引用这些新的PCL时,一切运行正常,但在我们的ASP.net项目中引用它们会导致运行时异常。 Runtime Exception

我发现这是因为System.Runtime.dll在构建期间没有输出到项目的bin文件夹。

我已尝试直接在项目中引用System.Runtime Nuget包,但仍然没有。 经过一些调查/黑客攻击后,我发现如果我从Nuget包中复制(正确)的System.Runtime.dll并将其手动粘贴到bin中,一切都会加载。

然后我创建了一个post build事件,找到并将丢失的dll复制到bin中,但dll仍然从我们的部署包中排除。

在构建过程中是否有必要将dll输出到bin目录,就像我的其他依赖项一样?

我已经阅读了关于.NetStandard的文档并搜索了这个问题,但还没有设法找到任何帮助。

1 个答案:

答案 0 :(得分:2)

我有同样的问题 - 我浪费了大约5个小时试图修补配置文件和NuGet包,只是为了让我感到懊恼System.Runtime.DLLSystem.Runtime.Extensions.DLL不在bin目录中。

如果我有任何突破,我会回信。

- 编辑:我不知道这是否会对你有所帮助,但我决定从第一个开始,重新创建PCL项目,然后重新添加到解决方案中。我将PCL设置为目标netstandard1.3;这是PCL的project.json

{
  "name": "<redacted>",
  "version": "1.0.0-*",
  "supports": {
    "net46.app": {}
  },
  "dependencies": {
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1",
    "NETStandard.Library": "1.6.0",
    "Newtonsoft.Json": "9.0.1"
  },
  "frameworks": {
    "netstandard1.3": {
      "imports": "portable-net46+win8"
    }
  }
}

执行此操作,然后通过IDE添加引用后,我不再获得程序集错误。我也可以将这个PCL链接到我的.NET Core 1.0应用程序。

希望这有帮助。