将常规 class 库转换为 ASP.NET 5 (vnext)
Convert regular class library to ASP.NET 5 (vnext)
我在我的新 ASP.NET 5 (vnext) 项目中的一个现有项目中引用库时遇到问题。
我在网上没有找到关于转换现有库或更改编译目标的参考资料。
我创建了一个新的 ASP.NET 5 库,它有一个不同的项目结构,所以我猜这就是为什么似乎没有办法从 VS 移植它们的原因。
除了复制文件,还有什么方法可以做到这一点吗?这将创建 2 个代码库,每个代码库都需要维护。
有 2 个解决方案:
使用共享代码
您可以创建一个 ASP.Net class 库并要求它从您的其他 class 库编译 .cs。为此,请在 project.json
添加编译选项:
{
...
"compile": [ "**\*.cs", "..\Shared\*.cs" ],
...
}
在此示例中,..\Shared
文件夹中的代码将与项目代码一起编译。
为 net 4.5
编译你的 ASP.Net class 库
您可以创建一个 ASP.Net class 库并要求它以 4.5 框架为目标。为此,请在 project.json
中添加 frameworks
中的 net45 选项
{
...
"frameworks": {
"net45": { },
"dnx451": { },
"dnxcore50": { }
},
...
}
在此示例中,项目针对 3 个框架:4.5、ASP.Net full 和 ASP.Net Core
新项目系统支持编译为各种构建目标,包括 'classic' .NET 项目类型(class 库、控制台等)。但是你需要使用新项目系统才能使用它,即复制文件到新项目中。
这可能非常有用的原因是您可以维护单个代码库,如果您可以使用 #if <framework-target>
块将代码从 运行 中分离出来在任何平台上都受支持。 framework-target
在这种情况下是 project.json 中框架条目的大写版本(即 NET45、DNX451、DNXCORE50)。
对我来说,新的项目系统似乎允许使用单个代码库来服务于多个目标。如果您的代码使之成为可能,那么它是从单个项目文件同时生成多个输出的不错选择。这并不适用于所有情况,但我认为对于小型且非常集中的模块化选择来说,这将是一个不错的选择。
如果您的项目需要更多的项目级处理(特殊的 ms-build 任务、预处理和后处理等),那么新的单个项目可能不会很好地工作,您最好为每个目标使用单独的项目。随着更多选项被添加到新项目类型,这在未来可能会改变。
我在我的新 ASP.NET 5 (vnext) 项目中的一个现有项目中引用库时遇到问题。
我在网上没有找到关于转换现有库或更改编译目标的参考资料。
我创建了一个新的 ASP.NET 5 库,它有一个不同的项目结构,所以我猜这就是为什么似乎没有办法从 VS 移植它们的原因。
除了复制文件,还有什么方法可以做到这一点吗?这将创建 2 个代码库,每个代码库都需要维护。
有 2 个解决方案:
使用共享代码
您可以创建一个 ASP.Net class 库并要求它从您的其他 class 库编译 .cs。为此,请在 project.json
添加编译选项:
{
...
"compile": [ "**\*.cs", "..\Shared\*.cs" ],
...
}
在此示例中,..\Shared
文件夹中的代码将与项目代码一起编译。
为 net 4.5
编译你的 ASP.Net class 库
您可以创建一个 ASP.Net class 库并要求它以 4.5 框架为目标。为此,请在 project.json
中添加 frameworks
{
...
"frameworks": {
"net45": { },
"dnx451": { },
"dnxcore50": { }
},
...
}
在此示例中,项目针对 3 个框架:4.5、ASP.Net full 和 ASP.Net Core
新项目系统支持编译为各种构建目标,包括 'classic' .NET 项目类型(class 库、控制台等)。但是你需要使用新项目系统才能使用它,即复制文件到新项目中。
这可能非常有用的原因是您可以维护单个代码库,如果您可以使用 #if <framework-target>
块将代码从 运行 中分离出来在任何平台上都受支持。 framework-target
在这种情况下是 project.json 中框架条目的大写版本(即 NET45、DNX451、DNXCORE50)。
对我来说,新的项目系统似乎允许使用单个代码库来服务于多个目标。如果您的代码使之成为可能,那么它是从单个项目文件同时生成多个输出的不错选择。这并不适用于所有情况,但我认为对于小型且非常集中的模块化选择来说,这将是一个不错的选择。
如果您的项目需要更多的项目级处理(特殊的 ms-build 任务、预处理和后处理等),那么新的单个项目可能不会很好地工作,您最好为每个目标使用单独的项目。随着更多选项被添加到新项目类型,这在未来可能会改变。