有没有一种相对方便的方法在MVC6中包含标准类库?我认为标准的添加引用对话框可以创建一个包装器,但是我没有成功。将其发布为Nuget包似乎对于持续开发调试非常不方便。
如果没有包装器,是否有内置的方法可以将标准类库转换为新类型?
有没有一种相对方便的方法在MVC6中包含标准类库?我认为标准的添加引用对话框可以创建一个包装器,但是我没有成功。将其发布为Nuget包似乎对于持续开发调试非常不方便。
如果没有包装器,是否有内置的方法可以将标准类库转换为新类型?
我看到了一些不同的方法(使用dnu
实用程序或使用VS添加引用)。根据你想要引用一个现有程序集还是引用解决方案中的非 ASP 5 项目,做法也略有不同。
当你要给一个不在解决方案中的现有程序集添加引用时:
使用dnu wrap
命令添加引用。你可以打开开发人员命令提示符并导航到你的解决方案文件夹,或者更简单地在Visual Studio中打开包管理器控制台。
现在如果你想添加对fullPathToYourDll\Foo.dll
的引用,则需要运行以下命令(其中的Framework参数是在包装程序集时必需的,并且被定义为被包装程序集的目标框架):
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-*",
}
}
},
或者,使用Visual Studio。在ASP 5项目中右键单击引用,选择添加引用...,然后单击浏览。现在导航到包含程序集的文件夹并选择dll文件。
Visual Studio将为您更新包装文件夹(创建mySolution\wrap\Foo\project.json
),甚至将依赖项添加到您的项目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.NET 5项目的project.json文件,包括对封装程序集的引用,例如:
"frameworks": {
"dnx451": {
"dependencies": {
"MyNonAsp5Project": "1.0.0-*",
}
}
},
或者使用Visual Studio。在ASP 5项目中右键单击引用,选择添加引用...。现在在左侧展开项目,选择该项目,然后单击确定。
Visual Studio将更新包装文件夹(创建mySolution \ wrap \ MyNonAsp5Project \ project.json
),甚至会在您的项目json文件(asp 5项目中的文件)中添加依赖项。
PS。最近我一直在升级到Win10并安装/卸载软件,不知何故我最终得到了一个环境变量Platform=MCD 。这将被MSBuild视为默认平台,并可能会给您带来一些痛苦。具体而言,在运行dnu wrap
命令包装csproj文件时,我遇到了错误无法解析引用。(因为内部使用msbuild来解析csproj引用)。