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

Visual studio 2015 ASP.NET 5 beta 7的共享类库参考,visual-studio-2015,asp.net-core,Visual Studio 2015,Asp.net Core,在我们当前的环境中,我们有一些共享公共库(C#Class library.NET 4.5.1 csproj)项目,这些项目被asp.NET和控制台应用程序引用。我们正在考虑将我们的一个web项目升级到ASP.NET 5,以开始测试即将到来的一些新变化 由于我无法在ASP.NET 5中对旧的csproj库类型进行项目引用,因此我必须通过其编译的DLL引用库,并从project.json中删除dnxcore50(这对我们来说很好)。但是,我们拥有共享库源代码,并不断在开发环境中进行更新,以便经常需要

在我们当前的环境中,我们有一些共享公共库(C#Class library.NET 4.5.1 csproj)项目,这些项目被asp.NET和控制台应用程序引用。我们正在考虑将我们的一个web项目升级到ASP.NET 5,以开始测试即将到来的一些新变化

由于我无法在ASP.NET 5中对旧的csproj库类型进行项目引用,因此我必须通过其编译的DLL引用库,并从project.json中删除dnxcore50(这对我们来说很好)。但是,我们拥有共享库源代码,并不断在开发环境中进行更新,以便经常需要对DLL进行修改和更改。ASP.NET 5将DLL放在lib目录中,不使用csproj目录的路径


如果asp.net和console csproj应用程序以及asp.net 5应用程序需要共享一个公共代码库,而无需维护两个代码库,您会怎么做?在编译asp.net 5项目之前,您会建议编译公共库项目并替换库中的引用DLL的生成任务,还是为我们的共享库设置本地nuget repo,因为csproj现在不可能使用项目引用?我们是一个共享团队,所有这些代码都在TFS中,因此无论我做什么,都需要为其他人轻松复制。

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

还有一种方法-
dnu
有一个名为
wrap
的简便命令。它将现有的
.csproj
文件包装到
project.json
文件中,然后可以被aspnet5项目引用

您可以这样做:

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

    {
    “项目”:[“src”,“测试”],
    “sdk”:{
    “版本”:“1.0.0-rc1-final”
    }
    }
    
  • 在包含
    global.json
    的同一目录中,为每个现有
    .csproj
    项目执行
    dnu wrap

    dnu wrap src/my.project/my.project.csproj  
    
    这将创建一个目录
    wrap
    ,其中包含包装
    .csprojs
    project.json
    文件。示例文件如下所示:

    {
    “版本”:“1.0.0-*”,
    “框架”:{
    “net45”:{
    “wrappedProject”:“../../src/my.project/my.project.csproj”,
    “bin”:{
    “程序集”:“../../src/my.project/obj/{configuration}/my.project.dll”,
    “pdb”:“../../src/my.project/obj/{configuration}/my.project.pdb”
    }
    }
    }
    }
    
    请注意,
    wrap
    目录也被添加到
    global.json
    中的
    projects
    部分

  • 在您的解决方案中,添加一个新的aspnet项目,并添加对包装项目的引用。只需添加:

    “我的项目”:
    
    依赖项
    部分。Aspnet应该自动拾取根目录中的
    global.json
    文件,并在其中列出的所有目录中查找项目,包括
    wrap
    目录

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

  • 您可以在此处找到示例代码:

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