首页 > 代码库 > 摸索门径之ASP.NET 5 出现 "The following projects are not supported as references:"**.csproj""的原因

摸索门径之ASP.NET 5 出现 "The following projects are not supported as references:"**.csproj""的原因

VS2015 Preview 发布已经有一段时间了。根据官方的说法ASP.NET 5 做了一些重大改进和设计。

优化了的开发框架有如下几个特性:

  • 支持跨平台运行,不仅能在Windows上运行还能在Mono平台的.NET运行环境,支持Unix, Windows, MacOS等操作系统。
  • 不同以往的HTTP请求管道,可以自我托管和托管到IIS上。
  • MVC,Web Api, Web Pages 相结合的统一的编程模型。
  • 可以不需要Build可以看到修改效果。
  • 在github上开源,可以下载到一些应用程序。

     等。。。

对于asp.net 5 的一些改变相信一些朋友发现的比我还多,在这方面做了一些大的改变,微软还真是颠覆了一下自己,这也是一个值得大家期待和进步的地方,对于构建web应用程序来说他也是一个比较理想的选择。那么在asp.net 5 的学习过程中,相信热爱技术的朋友已经碰到和我一样的问题了,在Visual Studio 2015 Preview beta1 中还没有办法从ASP.NET 5项目引用的之前版本csproj项目,当我们引用类库时会发现报错提示如下:

技术分享

 

不支持引用下列项目:**.csproj。顾名思义,版本不兼容那么如何做到版本兼容呢?方法肯定是有的,例如发布NuGet包或者做版本迁移,相信有些朋友对发布NuGet包不会太陌生,那么我们就学习做版本迁移吧。[注:版本迁移,是作者根据自己的理解翻译的。]

安装KVM(K Version Manager)

需要在Windows Cmd.exe或者VS Cmd.exe上运行下面的命令,该命令将下载并运行安装KVM在当前用户。(需要管理管权限)

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString(‘https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.ps1‘))" 

如果安装成功如下图所示:

技术分享

然后在命令行中输入:

kpm wrap .\src\ClassLibrary

结果如下:

技术分享

此时,我们可以修改project.json文件:

... "dependencies": { "ClassLibrary": "" }, ... 

英语好的朋友可以结合下面原文看下!

Visual Studio 2015 Preview (as of writing this) comes with the ASP.NET 5 stable release beta1. In this version there is no way to reference a csproj project from an ASP.NET 5 project.

However, on the development feed of ASP.NET 5 the command kpm wrap was introduced to support referencing csproj-projects from ASP.NET 5 projects. See the github issue #827 in the aspnet/KRuntime repository and pull request #875 which closes the issue.

Here is an example how you would use kpm wrap:

Make sure the newest version of the KRuntime is installed (check this with the kvm list command) (I tested this with version 1.0.0-beta2-10709).

Create an ASP.NET 5 class library project, I used the name ClassLibrary1.

Create a "normal" csproj class library, I named this ClassLibrary2 (make sure you put this in the src folder).

From the commandline, from the solution directory run the command

kpm wrap .\src\ClassLibrary2

This gives the output:

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

 

Now in the project.json of ClassLibrary1 (which is ASP.NET 5) you can add a reference to ClassLibrary2 with this:

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

 

Note: kpm wrap did not run properly for me with cmd, I needed to launch powershell to make it run.

 

对了,伙伴们Visual Studio 2015 Preview beta2 做了改进并且支持引用C#标准项目。

链接:http://blogs.msdn.com/b/visualstudio/archive/2015/01/16/visual-studio-2015-cpt-5-now-available.aspx

摸索门径之ASP.NET 5 出现 "The following projects are not supported as references:"**.csproj""的原因