如何在 MVC6 中使用标准 class 库?
How do I use a standard class library in MVC6?
是否有一种相当方便的方法可以在 MVC6 中包含标准 class 库?我认为标准的添加参考对话框可以创建一个包装器,但我没有任何运气。将其发布为 nuget 包对于正在进行的开发调试来说似乎非常不方便。
如果没有包装器,是否有将标准 class 库转换为新类型的内置方法?
到目前为止,我已经看到了几种不同的方法(使用 dnu
实用程序或使用 VS 添加引用)。它也略有不同,具体取决于您是要引用现有程序集还是要引用解决方案中的非 asp 5 项目。
当您想要添加对不属于您的解决方案的现有程序集的引用时:
使用dnu wrap
命令添加引用。您可以打开开发人员命令提示符并导航到您的解决方案文件夹,或者更简单地打开 visual studio.
中的包管理器控制台
现在,如果您想添加对 fullPathToYourDll\Foo.dll
的引用,您将 运行 以下命令(包装程序集时需要框架参数,定义为 要包装的程序集的目标框架):
dnu wrap "C:\fullPathToYourDll\Foo.dll" -f 4.5.1
这将 generate/update wrap 文件夹放入 asp 5 解决方案文件夹中,其中包含一个文件 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 项目中的引用,select 添加引用...,然后单击 浏览 。现在导航到包含程序集和 select dll 文件的文件夹。
Visual studio 将为您更新包装文件夹(创建 mySolution\wrap\Foo\project.json
),甚至会在您的 project.json 中添加依赖项(您的 asp 5项目).
当您想在解决方案中添加对非 asp 5 项目的引用时:
使用dnu wrap
命令添加引用。
该过程与之前添加对现有程序集的引用的场景非常相似。现在,如果您想在解决方案中添加对非 asp 5 项目的引用,您将 运行 以下命令:
dnu wrap ".\myNonAsp5Project\MyNonAsp5Project.csproj"
在添加对现有程序集的引用时,这将 generate/update wrap 文件夹放在 asp 5 解决方案文件夹中,尽管这次文件 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 项目中的引用,select 添加引用...。现在展开左侧的 Projects,select 项目并单击确定。
Visual studio 将更新包装文件夹(创建 mySolution\wrap\MyNonAsp5Project\project.json
),甚至会在您的 project.json(您的 asp 5 项目中的那个)中添加依赖项。
PS。我最近一直在升级到 Win10 和 installing/uninstalling 东西,不知何故我最终得到了一个环境变量 Platform=MCD。这将被 MSBuild 作为默认平台,可能会给您带来一些痛苦。具体来说,当 运行 使用 dnu wrap
命令包装 csproj 文件时,我收到错误 Failed to resolve references。 (因为 internally 它使用 msbuild 来解析 csproj 引用)。
是否有一种相当方便的方法可以在 MVC6 中包含标准 class 库?我认为标准的添加参考对话框可以创建一个包装器,但我没有任何运气。将其发布为 nuget 包对于正在进行的开发调试来说似乎非常不方便。
如果没有包装器,是否有将标准 class 库转换为新类型的内置方法?
到目前为止,我已经看到了几种不同的方法(使用 dnu
实用程序或使用 VS 添加引用)。它也略有不同,具体取决于您是要引用现有程序集还是要引用解决方案中的非 asp 5 项目。
当您想要添加对不属于您的解决方案的现有程序集的引用时:
使用
中的包管理器控制台dnu wrap
命令添加引用。您可以打开开发人员命令提示符并导航到您的解决方案文件夹,或者更简单地打开 visual studio.现在,如果您想添加对
fullPathToYourDll\Foo.dll
的引用,您将 运行 以下命令(包装程序集时需要框架参数,定义为 要包装的程序集的目标框架):dnu wrap "C:\fullPathToYourDll\Foo.dll" -f 4.5.1
这将 generate/update wrap 文件夹放入 asp 5 解决方案文件夹中,其中包含一个文件
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 项目中的引用,select 添加引用...,然后单击 浏览 。现在导航到包含程序集和 select dll 文件的文件夹。
Visual studio 将为您更新包装文件夹(创建
mySolution\wrap\Foo\project.json
),甚至会在您的 project.json 中添加依赖项(您的 asp 5项目).
当您想在解决方案中添加对非 asp 5 项目的引用时:
使用
dnu wrap
命令添加引用。该过程与之前添加对现有程序集的引用的场景非常相似。现在,如果您想在解决方案中添加对非 asp 5 项目的引用,您将 运行 以下命令:
dnu wrap ".\myNonAsp5Project\MyNonAsp5Project.csproj"
在添加对现有程序集的引用时,这将 generate/update wrap 文件夹放在 asp 5 解决方案文件夹中,尽管这次文件
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 项目中的引用,select 添加引用...。现在展开左侧的 Projects,select 项目并单击确定。
Visual studio 将更新包装文件夹(创建
mySolution\wrap\MyNonAsp5Project\project.json
),甚至会在您的 project.json(您的 asp 5 项目中的那个)中添加依赖项。
PS。我最近一直在升级到 Win10 和 installing/uninstalling 东西,不知何故我最终得到了一个环境变量 Platform=MCD。这将被 MSBuild 作为默认平台,可能会给您带来一些痛苦。具体来说,当 运行 使用 dnu wrap
命令包装 csproj 文件时,我收到错误 Failed to resolve references。 (因为 internally 它使用 msbuild 来解析 csproj 引用)。