【问题标题】:.net core classlibrary calling .net framework class library.net核心类库调用.net框架类库
【发布时间】:2016-06-03 07:06:17
【问题描述】:

找不到我的疑问的答案,希望有人能澄清。

我用

创建了一个虚拟解决方案
  • 1个类库(.net框架)
  • 1个.net核心库

试图引用任何一种方式,但我不能,它们不兼容,很好。

现在我的问题

我有一个实用类库(.net 框架),带有扩展、助手等... winforms-wpf-asp.net mvc 4,5 应用程序现在使用的.net core 事件在我看来我不能再使用这个库,除非我将它移植到.net core,然后我不能使用我的其他应用。

正确的做法是什么?

我错过了显而易见的事情吗?

【问题讨论】:

  • 你说的“.net标准”,你是指旧的.Net Framework还是新的.Net Platform Standard?您究竟是如何创建 .Net Core 库的?
  • @svick 是的,是“旧”的 .net 框架。使用aspnetcore rc2自带的模板创建.net core库

标签: c# asp.net-core-mvc .net-core


【解决方案1】:

我无法通过简单地使用共享项目在普通 .NET 库和 Core 项目之间共享代码,因为我无法从 Core 项目中引用它。

但是,我可以通过一个小技巧让它发挥作用。

让我解释一下这个文件夹/文件结构:

[ProjectName] // Root of Core project
    project.json
    [ProjectName].xproj

    Shared // Root of Shared project
        [ProjectName].Shared.projitems
        [ProjectName].Shared.shproj 
        // -- Source files here --

    Net // Root of .NET project
        [ProjectName].csproj
        Properties
            AssemblyInfo.cs // For both Core and .NET project
        // NO source files here

因此,您当然需要 3 个项目:一个核心项目、一个普通 .NET 项目和一个共享项目。
共享项目包含所有源文件。
.NET 项目引用 Shared 项目,因此它也有这些文件。
Core 项目可以看到 Shared 项目的所有文件,因此它也有相同的文件。

就是这样。您现在可以拥有 .NET 和 Core 项目的通用源代码文件。

一些注意事项:

  • 永远不要将.shroj.csproj 放在同一个文件夹中。对我来说,它在 VS (2015) 中完全关闭了智能感知。这些信息让我付出了很多痛苦...
  • 您可以使用#if -s 微调常用代码
  • 您还可以在具有上述文件夹结构的 .NET 项目中使用 NuGet 2。
    • 请注意,如果您将 (NuGet 2) packages.config 放入 (NuGet 3) project.json 所在的同一文件夹中,则后者将完全覆盖之前的文件夹。

【讨论】:

    【解决方案2】:

    您可以尝试使用共享库项目。可以这么说,它针对引用应用程序/库的平台进行编译。这使您能够创建针对不同平台的类库,而无需复制任何代码,但它可能需要一些 #if...

    https://blogs.msdn.microsoft.com/dotnet/2014/04/21/sharing-code-across-platforms/

    【讨论】:

      猜你喜欢
      • 2020-03-25
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 2018-04-16
      • 1970-01-01
      • 2020-05-20
      • 2019-11-18
      • 2017-04-03
      相关资源
      最近更新 更多