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

2024-01-24

在我们当前的环境中,我们有一些共享的公共库(C# 类库 .NET 4.5.1 csproj)项目,它们被 ASP.NET 和控制台应用程序引用。我们正在考虑将 1 个 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 存储库,因为现在 csproj 无法进行项目引用?我们是一个共享团队,所有这些代码都在 TFS 中,因此我所做的任何事情都需要轻松复制给其他人。


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

还有另一种方法——dnu有一个名为的方便命令wrap。它包裹了你现有的.csproj文件到project.json然后可以由 aspnet5 项目引用的文件。

你可以这样做:

  1. Add a global.json http://docs.asp.net/en/latest/conceptual-overview/understanding-aspnet5-apps.html#the-global-json-file文件位于包含您的项目的某个顶级目录中。在里面projects部分,列出包含源代码的目录,例如:

    {
        "projects": [ "src", "test" ],
        "sdk": {
            "version": "1.0.0-rc1-final"
        }
    }
    
  2. 在包含以下内容的同一目录中global.json执行dnu wrap对于每个现有的.csproj项目。

    dnu wrap src/my.project/my.project.csproj  
    

    这应该创建一个目录wrap含有project.json包装的文件.csprojs。示例文件如下所示:

    {
        "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"
                }
            }
        }
    }
    

    注意wrap目录也被添加到projects部分在global.json.

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

    "my.project": ""
    

    to dependencies部分。 Aspnet 应该会自动拾取global.json文件位于根目录中,并将在其中列出的所有目录中查找项目,包括wrap目录。

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET 5 beta 7 的共享类库参考 的相关文章

随机推荐