B. *_*non 6 c# asp.net upgrade asp.net-web-api visual-studio-2013
我使用此指南将Web API应用程序升级到funkelnagelneu版本:
然而,在完成这些步骤之后(似乎所有这些都应该是自动化的,无论如何),我试图运行它并得到," 无法直接启动具有类库的输出类型的项目 "
什么Sam Hills Brothers Coffee正在这里发生什么?谁说这是一个班级图书馆?
所以我打开了Project> Properties,并对其进行了更改(由于某种原因,它被标记为"类库" - 它要么不是昨天,要么工作正常)到"Windows应用程序"的输出类型("控制台应用程序")和"类库"是唯一的其他选项).
现在它不会编译,抱怨:" 程序'c:\ Platypus_Server_WebAPI\PlatypusServerWebAPI\PlatypusServerWebAPI\obj\Debug\PlatypusServerWebAPI.exe'不包含适用于入口点的静态'Main'方法...... "
鉴于这种困境,如何让我的Web API应用程序重新启动并运行?
查看packages.config,两个条目看起来很划伤:
<package id="Microsoft.AspNet.Providers" version="1.2" targetFramework="net40" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
Run Code Online (Sandbox Code Playgroud)
所有其他人都以net451为目标.这可能是问题吗?我应该删除这些包吗?
我尝试通过NuGet包管理器卸载Microsoft.Web.Infrastructure包(它的描述让我相信我不需要它;而且,它没有依赖性),但它告诉我," NuGet无法安装或卸载以下项目中的选定包.[我的] "
我再次走了几步,发现我错过了一步.我不得不在Application web.config文件中更改此条目:
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)
(从"4.0.0.0"到"5.0.0.0")
...但我仍然得到相同的结果 - 它重建/编译,但不会运行," 具有类库的输出类型的项目无法直接启动 "
考虑到错误信息,它不能直接打开一个类库,我想,"当然你不能/不会 - 这是一个网络应用程序,而不是一个项目.所以我跟着预感,关闭了项目,并重新打开它作为一个网站(而不是重新开放项目).
这让我更进一步,至少; 现在我看到了一个YSOD:
无法加载文件或程序集'System.Web.WebPages.Razor,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.该系统找不到指定的文件.
注意:该项目现在(在作为网站打开后)名为"localhost_48614"
并且...不再有"引用"文件夹......?!?!?
至于那个YSOD,我正在获得官方指示(http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api -project-to-aspnet-mvc-5-and-web-api-2)说这样做,我引用:
" 将包含"System.Web.WebPages.Razor"的所有元素从版本"2.0.0.0"更新为
版本"3.0.0.0"."
当我选择工具>库包管理器>管理解决方案的NuGet包时,我得到"操作失败.无法找到解决方案目录.请确保已保存解决方案."
所以我保存它,它用这个时髦的新名称保存它(C:\ Users\clay\Documents\Visual Studio 2013\Projects\localhost_48614\localhost_48614.sln)
我在NuGet软件包管理器的顶部找到了启动黄色条带告诉我," 此解决方案中缺少一些NuGet软件包.点击从您的在线软件包源恢复. "
我这样做(点击"恢复"按钮),然后下载丢失的软件包......我最终得到了30个软件包.
我尝试再次运行app/site,并且......以前的YSOD成为编译错误:
预应用程序启动初始化方法启动类型System.Web.Mvc.PreApplicationStartCode引发异常,并显示以下错误消息:无法加载文件或程序集'System.Web.WebPages.Razor,Version = 3.0.0.0,Culture = neutral ,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.该系统找不到指定的文件..
Argghhhh!(而且它甚至不是像海盗一样的谈话).
我仍然很好奇为什么Humpty Dumpty倒下并打破了他的王冠(可以这么说),但我终于全力以赴并创建了一个新的项目,复制和粘贴代码 - 它运行良好(VS 2013和Web API,使用从VS 2008,.NET 3.5客户端应用程序调用的REST方法).
小智 10
在迁移指南的最后一步中,您是否仅删除了指定的MVC4 Project Guid?我遇到了和你一样的问题,当我回溯我的步骤时意识到我已经删除了我的.csproj文件中的所有三个Guid.我在此元素中恢复了其他Guids,解决方案现在将其识别为MVC应用程序,现在可以正常工作.所以该行现在写道:
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
Run Code Online (Sandbox Code Playgroud)
希望有所帮助
| 归档时间: |
|
| 查看次数: |
10146 次 |
| 最近记录: |