Sea*_*ron 7 visual-studio-2015 asp.net-core
在我们当前的环境中,我们有一些共享的公共库(C#类库.NET 4.5.1 csproj)项目,它们都被asp.net和控制台应用程序引用.我们正在考虑将我们的一个Web项目升级到ASP.NET 5,以开始测试一些新的更改.
由于我无法在ASP.NET 5中对旧的csproj库类型进行项目引用,因此我必须通过它编译的DLL引用该库并从project.json中删除dnxcore50(这对我们来说很好).但是,我们拥有共享库源并不断降低DEV环境中的更新,以便对DLL进行修改和更改.ASP.NET 5将DLL放在lib目录中,并且不使用csproj目录的路径.
如果您有asp.net和控制台csproj应用程序以及需要共享公共代码库而不必维护2个代码库的asp.net 5应用程序,您会怎么做?您是否会建议编译公共库项目并在编译asp.net 5项目之前替换lib中的引用DLL,或者为我们的共享库设置本地nuget repo,因为项目引用现在对csproj来说是不可能的?我们是TFS中所有这些代码的共享团队,所以无论我做什么都需要为其他人轻松复制.
如果共享代码不经常更改,我会使用共享 nuget 存储库。通过这种方式,您可以获得使用 nuget 包的所有好处:版本控制、轻松恢复等。您的解决方案可以拥有更少的项目并更快地编译。但如果共享代码不断更改,则执行打包-推送-恢复过程可能会很痛苦。
还有另一种方法 -dnu有一个名为 的方便命令wrap。它将现有.csproj文件包装成project.json可供 aspnet5 项目引用的文件。
你可以这样做:
global.json在包含您的项目的某个顶级目录中添加一个文件。在projects部分中,列出包含源代码的目录,例如:
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-rc1-final"
}
}
Run Code Online (Sandbox Code Playgroud)在包含每个现有项目的global.json执行的同一目录中。dnu wrap.csproj
dnu wrap src/my.project/my.project.csproj
Run Code Online (Sandbox Code Playgroud)
这应该创建一个wrap包含project.json包装文件的目录.csprojs。示例文件如下所示:
dnu wrap src/my.project/my.project.csproj
Run Code Online (Sandbox Code Playgroud)
请注意,目录wrap也被添加到.projectsglobal.json
在您的解决方案中,添加一个新的 aspnet 项目并添加对包装项目的引用。只需添加:
{
"version": "1.0.0-*",
"frameworks": {
"net45": {
"wrappedProject": "../../src/my.project/my.project.csproj",
"bin": {
"assembly": "../../src/my.project/obj/{configuration}/my.project.dll",
"pdb": "../../src/my.project/obj/{configuration}/my.project.pdb"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
到dependencies部分。Aspnet 应该自动拾取global.json根目录中的文件,并将在列出的所有目录(包括目录)中查找项目wrap。
现在您可以开始了 - 您可以使用 中的所有类my.project,在调试时单步执行它们,转到定义等。请注意,在您的解决方案中,您仍然拥有旧的csproj.
您可以在此处找到示例代码: https: //github.com/heavymetaldev/aspnet5-wrap。
我想如果你的项目中有一些自定义的东西,比如条件编译、自定义包含等,这可能会变得有点复杂。
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |