.net 核心 class 库调用 .net 框架 class 库
.net core classlibrary calling .net framework class library
找不到我的疑问的答案,希望有人能澄清。
我用
创建了一个虚拟解决方案
- 1 class 库(.net 框架)
- 1 个 .net 核心库
试图引用任何一种方式,但我不能,它们不兼容,很好理解。
现在我的问题
我有一个实用程序 class 库(.net 框架),带有扩展、助手等...
现在由 winforms-wpf-asp.net mvc 4,5 应用程序使用.net core 事件在我看来我不能再使用这个库,除非我将它移植到 .net core,然后我不能与我的其他应用程序一起使用。
正确的做法是什么?
我错过了显而易见的东西吗?
您可以尝试使用共享库项目。可以这么说,它针对引用 application/library 的平台进行编译。这使您能够创建针对不同平台的 class 库,而无需复制任何代码,但它可能需要一些 #if...
https://blogs.msdn.microsoft.com/dotnet/2014/04/21/sharing-code-across-platforms/
我无法通过简单地使用共享项目在普通 .NET 库和核心项目之间共享代码,因为我无法从核心项目中引用它。
不过,我可以通过一些小技巧让它发挥作用。
让我用这个folder/file结构来解释一下:
[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 项目引用共享项目,因此它也有这些文件。
Core 项目看到 Shared 项目的所有文件,所以它也有相同的文件。
就是这样。您现在可以拥有 .NET 和 Core 项目的通用源代码文件。
一些注意事项:
- 永远不要将
.shroj
和 .csproj
放在同一个文件夹中。对我来说,它完全关闭了 VS (2015) 中的智能感知。这个信息让我付出了很多痛苦...
- 可以使用
#if
-s微调常用代码
- 您也可以在具有上述文件夹结构的 .NET 项目中使用 NuGet 2。
- 请注意,如果您将 (NuGet 2)
packages.config
放入 (NuGet 3) project.json
所在的同一文件夹中,后者将完全覆盖较早的。
找不到我的疑问的答案,希望有人能澄清。
我用
创建了一个虚拟解决方案- 1 class 库(.net 框架)
- 1 个 .net 核心库
试图引用任何一种方式,但我不能,它们不兼容,很好理解。
现在我的问题
我有一个实用程序 class 库(.net 框架),带有扩展、助手等... 现在由 winforms-wpf-asp.net mvc 4,5 应用程序使用.net core 事件在我看来我不能再使用这个库,除非我将它移植到 .net core,然后我不能与我的其他应用程序一起使用。
正确的做法是什么?
我错过了显而易见的东西吗?
您可以尝试使用共享库项目。可以这么说,它针对引用 application/library 的平台进行编译。这使您能够创建针对不同平台的 class 库,而无需复制任何代码,但它可能需要一些 #if...
https://blogs.msdn.microsoft.com/dotnet/2014/04/21/sharing-code-across-platforms/
我无法通过简单地使用共享项目在普通 .NET 库和核心项目之间共享代码,因为我无法从核心项目中引用它。
不过,我可以通过一些小技巧让它发挥作用。
让我用这个folder/file结构来解释一下:
[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 项目引用共享项目,因此它也有这些文件。
Core 项目看到 Shared 项目的所有文件,所以它也有相同的文件。
就是这样。您现在可以拥有 .NET 和 Core 项目的通用源代码文件。
一些注意事项:
- 永远不要将
.shroj
和.csproj
放在同一个文件夹中。对我来说,它完全关闭了 VS (2015) 中的智能感知。这个信息让我付出了很多痛苦... - 可以使用
#if
-s微调常用代码 - 您也可以在具有上述文件夹结构的 .NET 项目中使用 NuGet 2。
- 请注意,如果您将 (NuGet 2)
packages.config
放入 (NuGet 3)project.json
所在的同一文件夹中,后者将完全覆盖较早的。
- 请注意,如果您将 (NuGet 2)