繁体   English   中英

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

[英]Convert regular class library to ASP.NET 5 (vnext)

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

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

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

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

有两个解决方案:

使用共享代码
您可以创建一个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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM