如何在MVC6中使用标准类库?

Kel*_*ron 5 asp.net-core-mvc visual-studio-2015 asp.net-core

有没有一种在MVC6中包含标准类库的合理方便的方法?我认为标准的添加引用对话框可以创建一个包装器,但我没有运气.将其作为nuget包发布对于正在进行的开发调试来说似乎非常不方便.

如果没有包装器,是否有内置的方法将标准类库转换为新类型?

Dan*_*.G. 15

到目前为止,我已经看到了几种不同的方法(使用dnu实用程序或使用VS添加引用).它也略有不同,具体取决于您是要引用现有程序集还是引用解决方案中的非asp 5项目.

如果要添加对不属于解决方案的现有程序集的引用,请执行以下操作:

  • 使用该dnu wrap命令添加引用.您可以打开开发人员命令提示符并导航到解决方案文件夹,甚至可以更轻松地打开visual studio中的包管理器控制台.

    现在,如果要添加对fullPathToYourDll\Foo.dll您的引用,将运行以下命令(其中包装程序集时需要框架参数,并且定义为要包装的程序集的Target框架):

    dnu wrap "C:\fullPathToYourDll\Foo.dll" -f 4.5.1
    
    Run Code Online (Sandbox Code Playgroud)

    这将生成/更新asp 5解决方案文件夹中的wrap文件夹,包括一个如下所示的文件mySolution\wrap\Foo\project.json:

    {
      "version": "1.0.0-*",
      "frameworks": {
        "net451": {
          "bin": {
            "assembly": "../../../FooSln/Foo/bin/Debug/Foo.dll",
            "pdb": "../../../FooSln/Foo/bin/Debug/Foo.pdb"
          }
        }
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    最后,更新asp 5的project.json文件,以包含对包装程序集的引用,如下所示:

    "frameworks": {
      "dnx451": {
        "dependencies": {
          "Foo": "1.0.0-*",
        }
      }
    },
    
    Run Code Online (Sandbox Code Playgroud)
  • 或者,使用VS.右键单击ASP 5项目中的引用,选择Add Reference ...然后单击Browse.现在导航到包含程序集的文件夹,然后选择dll文件.

    Visual Studio将为您更新wrap文件夹(Creating the mySolution\wrap\Foo\project.json),甚至会在您的project.json(您的asp 5项目中的那个)中添加依赖项.

如果要在解决方案中添加对非asp 5项目的引用:

  • 使用该dnu wrap命令添加引用.

    该过程与添加对现有程序集的引用的先前方案非常相似.现在,如果要在解决方案中添加对非asp 5项目的引用,则将运行以下命令:

    dnu wrap ".\myNonAsp5Project\MyNonAsp5Project.csproj"
    
    Run Code Online (Sandbox Code Playgroud)

    当添加对现有程序集的引用时,这将生成/更新asp 5解决方案文件夹中的wrap文件夹,尽管这次文件mySolution\wrap\MyNonAsp5Project\project.json略有不同,因为它包装项目而不是程序集:

    {
      "version": "1.0.0-*",
      "frameworks": {
        "net451": {
          "wrappedProject": "../../MyNonAsp5Project/MyNonAsp5Project.csproj",
          "bin": {
            "assembly": "../../MyNonAsp5Project/obj/{configuration}/MyNonAsp5Project.dll",
            "pdb": "../../MyNonAsp5Project/obj/{configuration}/MyNonAsp5Project.pdb"
          }
        }
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    同样,您需要手动更新asp 5的project.json文件,以包含对包装程序集的引用,如下所示:

    "frameworks": {
      "dnx451": {
        "dependencies": {
          "MyNonAsp5Project": "1.0.0-*",
        }
      }
    },
    
    Run Code Online (Sandbox Code Playgroud)
  • 或者,使用VS.右键点击引用您的ASP 5项目,选择添加引用....现在展开左侧的Projects,选择项目并单击ok.

    Visual Studio将更新wrap文件夹(Creating mySolution\wrap\MyNonAsp5Project\project.json),甚至会在project.json(你的asp 5项目中的那个)中添加依赖项.

PS.我一直在升级到Win10并安装/卸载最近的东西,不知何故我最终得到了一个环境变量Platform = MCD.这将由MSBuild作为默认平台,可能会给你带来一些痛苦.具体来说,我在运行包装csproj文件的命令时收到错误,无法解析引用dnu wrap.(在内部它使用msbuild来解析csproj引用).