我在新的ASP.NET 5(vnext)项目中的一个现有项目中引用库时遇到问题。
我在网上找不到关于转换现有库或更改编译目标的参考。
我创建了一个新的ASP.NET 5库,它有一个不同的项目结构,所以我猜这就是为什么它们似乎不是一种移植它们的方法来自VS。
除了复制文件之外,有没有办法做到这一点?这将创建两个需要维护的代码库。
答案 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项目。随着更多选项被添加到新项目类型中,未来可能会发生变化。