【发布时间】:2015-11-01 06:07:24
【问题描述】:
是否有一种相当方便的方法可以在 MVC6 中包含标准类库?我认为标准的添加引用对话框可以创建一个包装器,但我没有任何运气。将其发布为 nuget 包似乎对于正在进行的开发调试非常不方便。
如果没有包装器,是否有将标准类库转换为新类型的内置方法?
【问题讨论】:
标签: visual-studio-2015 asp.net-core asp.net-core-mvc
是否有一种相当方便的方法可以在 MVC6 中包含标准类库?我认为标准的添加引用对话框可以创建一个包装器,但我没有任何运气。将其发布为 nuget 包似乎对于正在进行的开发调试非常不方便。
如果没有包装器,是否有将标准类库转换为新类型的内置方法?
【问题讨论】:
标签: visual-studio-2015 asp.net-core asp.net-core-mvc
到目前为止,我已经看到了几种不同的方法(使用 dnu 实用程序或使用 VS 添加引用)。它也略有不同,具体取决于您是要引用现有程序集还是要在解决方案中引用非 asp 5 项目。
当您想要添加对不属于您的解决方案的现有程序集的引用时:
使用dnu wrap 命令添加引用。您可以打开开发人员命令提示符并导航到您的解决方案文件夹,或者更简单地打开 Visual Studio 中的包管理器控制台。
现在,如果您想添加对fullPathToYourDll\Foo.dll 的引用,您将运行以下命令(包装程序集时需要框架参数,并定义为要包装的程序集的目标框架):
dnu wrap "C:\fullPathToYourDll\Foo.dll" -f 4.5.1
这将在您的 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"
}
}
}
}
最后,更新您的 asp 5 的 project.json 文件以包含对您包装的程序集的引用,如下所示:
"frameworks": {
"dnx451": {
"dependencies": {
"Foo": "1.0.0-*",
}
}
},
或者,使用 VS。右键单击 ASP 5 项目中的引用,选择 Add Reference...,然后单击 Browse。现在导航到包含程序集的文件夹并选择 dll 文件。
Visual Studio 将为您更新 wrap 文件夹(创建 mySolution\wrap\Foo\project.json),甚至会在您的 project.json 中添加依赖项(您的 asp 5 项目中的那个)。
当您想在解决方案中添加对非 asp 5 项目的引用时:
使用dnu wrap 命令添加引用。
该过程与之前添加对现有程序集的引用的场景非常相似。现在,如果您想在解决方案中添加对非 asp 5 项目的引用,您将运行以下命令:
dnu wrap ".\myNonAsp5Project\MyNonAsp5Project.csproj"
在添加对现有程序集的引用时,这将在您的 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"
}
}
}
}
同样,您需要手动更新您的 asp 5 的 project.json 文件,以包含对您包装的程序集的引用,如下所示:
"frameworks": {
"dnx451": {
"dependencies": {
"MyNonAsp5Project": "1.0.0-*",
}
}
},
或者,使用 VS。右键单击 ASP 5 项目中的引用,选择 Add Reference...。现在展开左侧的Projects,选择项目并点击ok。
Visual Studio 将更新 wrap 文件夹(创建 mySolution\wrap\MyNonAsp5Project\project.json),甚至会在你的 project.json 中添加依赖项(你的 asp 5 项目中的那个)。
附言。我最近一直在升级到 Win10 并安装/卸载东西,不知何故我最终得到了一个环境变量 Platform=MCD。这将被 MSBuild 用作默认平台,可能会给您带来一些痛苦。具体来说,我在运行 dnu wrap 命令包装 csproj 文件时收到错误 Failed to resolve references。 (作为internally,它使用msbuild 来解析csproj 引用)。
【讨论】: