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

时间:2015-06-02 08:28:33

标签: c# asp.net-core

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

我在网上找不到关于转换现有库或更改编译目标的参考。

我创建了一个新的ASP.NET 5库,它有一个不同的项目结构,所以我猜这就是为什么它们似乎不是一种移植它们的方法来自VS。

除了复制文件之外,有没有办法做到这一点?这将创建两个需要维护的代码库。

2 个答案:

答案 0 :(得分:4)

有两种解决方案:

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

{
    ...
    "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

答案 1 :(得分:0)

新项目系统支持编译到各种构建目标,包括“经典”.NET项目类型(类库,控制台等)。但是你需要使用新的项目系统来使用它,将文件复制到新项目中。

这可能非常有用的原因是您可以维护单个代码库,如果您可以使用#if <framework-target>块通过plaform分隔代码来阻止任何平台不支持的代码运行。在这种情况下,framework-target是project.json中框架条目的大写版本(即NET45,DNX451,DNXCORE50)。

对我而言,新项目系统似乎允许使用单个代码库来服务多个目标。如果您的代码能够实现,那么从单个项目文件同时生成多个输出是一个不错的选择。这对一切都不适用,但我认为这对于小型和非常集中的模块化选择来说是个不错的选择。

如果您的项目需要更多项目级别处理(特殊的ms-build任务,预处理和后处理等),那么新的单个项目可能无法正常工作,您最好为每个目标使用separte项目。随着更多选项被添加到新项目类型中,未来可能会发生变化。