ASP.NET 5 beta 7的共享类库参考

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中所有这些代码的共享团队,所以无论我做什么都需要为其他人轻松复制.

qbi*_*bik 2

如果共享代码不经常更改,我会使用共享 nuget 存储库。通过这种方式,您可以获得使用 nuget 包的所有好处:版本控制、轻松恢复等。您的解决方案可以拥有更少的项目并更快地编译。但如果共享代码不断更改,则执行打包-推送-恢复过程可能会很痛苦。

还有另一种方法 -dnu有一个名为 的方便命令wrap。它将现有.csproj文件包装成project.json可供 aspnet5 项目引用的文件。

你可以这样做:

  1. global.json在包含您的项目的某个顶级目录中添加一个文件。在projects部分中,列出包含源代码的目录,例如:

    {
        "projects": [ "src", "test" ],
        "sdk": {
            "version": "1.0.0-rc1-final"
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在包含每个现有项目的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

  3. 在您的解决方案中,添加一个新的 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

  4. 现在您可以开始了 - 您可以使用 中的所有类my.project,在调试时单步执行它们,转到定义等。请注意,在您的解决方案中,您仍然拥有旧的csproj.

您可以在此处找到示例代码: https: //github.com/heavymetaldev/aspnet5-wrap

我想如果你的项目中有一些自定义的东西,比如条件编译、自定义包含等,这可能会变得有点复杂。