如何从kproj引用csproj

我正在玩VS2015ASP.NET vNext ,并试图在同一解决方案中尝试将vNext类库(kproj)的引用添加到常规类库(csproj)。 Visual Studio 2015显示以下错误消息:

“以下项目不支持作为参考”。

是否有可能从vNext类库中添加对csproj的引用?

注意:kpm命令已被dnu替换。

Visual Studio 2015 Preview(撰写本文时)附带ASP.NET 5稳定版beta1。 在此版本中,无法从ASP.NET 5项目引用csproj项目。

但是,在ASP.NET 5的开发源代码中,引入了命令kpm wrap以支持从ASP.NET 5项目引用csproj-projects。 请参阅aspnet / KRuntime存储库中的github 问题#827并提取请求#875以解决问题。

以下是如何使用kpm wrap的示例:

确保安装了最新版本的KRuntime (使用kvm list命令检查)(我使用版本1.0.0-beta2-10709进行了测试)。

创建一个ASP.NET 5类库项目,我使用名称ClassLibrary1。

创建一个“普通”的csproj类库,我将其命名为ClassLibrary2(确保将其放在src文件夹中)。

从命令行,从solutiondirectory运行命令

kpm wrap .\src\ClassLibrary2

这给出了输出:

 Wrapping project 'ClassLibrary2' for '.NETFramework,Version=v4.5' Source C:\Users\andersns\Source\ClassLibrary1\src\ClassLibrary2\ClassLibrary2.csproj Target C:\Users\andersns\Source\ClassLibrary1\wrap\ClassLibrary2\project.json Adding bin paths for '.NETFramework,Version=v4.5' Assembly: ../../src/ClassLibrary2/obj/debug/ClassLibrary2.dll Pdb: ../../src/ClassLibrary2/obj/debug/ClassLibrary2.pdb 

现在在ClassLibrary1(即ASP.NET 5)的project.json中,您可以使用以下命令添加对ClassLibrary2的引用:

 ... "dependencies": { "ClassLibrary2": "" }, ... 

注意:使用cmd我没有正确运行kpm wrap ,我需要启动powershell才能运行它。

从(Visual Studio 2015 RC)开始, kpm命令已被dnu替换

dnu命令代表(.NET开发实用程序)

 dnu wrap .\src\ClassLibrary2\ClassLibrary2.csproj 

Visual Studio 2015 RC中的新ASP.NETfunction和修复http://blogs.msdn.com/b/webdev/archive/2015/04/29/new-asp-net-features-and-fixes-in-visual-工作室-2015-rc.aspx

我发现最简单的方法是为我想引用的.csproj创建一个相应的.kproj。 .kproj不需要列出每个包含的文件,因此这很简单。

您可以使用以下内容将YourProject.kproj创建为文本文件,并仅替换[REPLACE_WITH_UNIQUE_GUID]和[ROOT_NAMESPACE]。

    14.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)    [REPLACE_WITH_UNIQUE_GUID] [ROOT_NAMESPACE] ..\artifacts\obj\$(MSBuildProjectName) ..\artifacts\bin\$(MSBuildProjectName)\   2.0   True    

然后,您可以将此项目添加到您的解决方案中,并从MVC 6项目中引用它。

除了这个答案,我发现你需要使用if指令(#if)来进行无错误的调用:

就像是:

 #if ASPNET50 using class2 #endif 

当您在通话中使用它时,您需要执行相同的操作。

 #if ASPNET50 ViewBag.Message = class2.Class1.Greetings() #endif