C# 将常规类库转换为ASP.NET 5(vnext)

C# 将常规类库转换为ASP.NET 5(vnext),c#,asp.net-core,C#,Asp.net Core,我在新的ASP.NET 5(vnext)项目中的一个现有项目中引用库时遇到问题 我在网上没有找到有关转换现有库或更改编译目标的参考资料 我已经创建了一个新的ASP.NET5库,它有一个不同的项目结构,所以我猜这就是为什么似乎没有一种从VS移植它们的方法 除了复制文件,还有其他方法吗?这将创建两个需要维护的代码库。有两种解决方案: 使用共享代码 您可以创建一个ASP.Net类库,并要求它从其他类库编译.cs。为此,在project.json中添加compile选项: { ... "

我在新的ASP.NET 5(vnext)项目中的一个现有项目中引用库时遇到问题

我在网上没有找到有关转换现有库或更改编译目标的参考资料

我已经创建了一个新的ASP.NET5库,它有一个不同的项目结构,所以我猜这就是为什么似乎没有一种从VS移植它们的方法

除了复制文件,还有其他方法吗?这将创建两个需要维护的代码库。

有两种解决方案:

使用共享代码
您可以创建一个ASP.Net类库,并要求它从其他类库编译.cs。为此,在
project.json中添加compile选项:

{
    ...
    "compile": [ "**\\*.cs", "..\\Shared\\*.cs" ],
    ...
}
在此示例中,
。\Shared
文件夹中的代码将与项目代码一起编译

为Net 4.5编译ASP.Net类库
您可以创建一个ASP.Net类库,并要求它以4.5框架为目标。为此,在
project.json中添加net45选项

{
    ...
    "frameworks": {
        "net45": { },
        "dnx451": { },
        "dnxcore50": { }
    },
    ...
} 

在此示例中,项目目标为3个框架:4.5、ASP.Net full和ASP.Net Core。新的项目系统支持编译各种构建目标,包括“classic”.Net项目类型(类库、控制台等)。但是您确实需要使用新的项目系统来使用它,它将文件复制到新项目中

这可能非常有用的原因是,如果您可以使用
#if
通过plaform将代码分隔开来,那么您可以维护单个代码库,从而阻止任何平台都不支持的代码运行<代码>框架目标
在本例中是project.json中框架项的大写版本(即NET45、DNX451、DNXCORE50)

在我看来,新的项目系统允许使用单个代码库来服务多个目标。如果您的代码使这成为可能,那么它是从单个项目文件同时生成多个输出的好选择。这不会适用于所有情况,但我认为它将是小型和非常集中的模块化选择的好选择

如果您的项目需要更多的项目级处理(特殊的ms构建任务、预处理和后处理等),那么新的单个项目可能无法很好地工作,您最好为每个目标使用separte项目。随着更多选项添加到新的项目类型,这种情况在将来可能会发生变化