我需要在ASP.NET 4和ASP.NET 5上测试我的.NET Core / .NET 4.6.2库。我有使用dnx和ASP.NET 4 / MVC 5的ASP.NET 5 / MVC6项目将建立。
我无法运行ASP.NET 4和MVC 5网站,因为当我在Visual Studio中按F5时,我无法找到放入project.json的命令来启动IIExpress。
我有两个带有project.json / .xproj库的Visual Studio 2015解决方案。工作的ASP.NET 5 / MVC 6 project.json是:
{
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
},
"frameworks": {
"dnxcore5": {
"dependencies": {
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
"NJsonApiCore": "1.0.0-*",
"NJsonApiCore.Web.MVC6": "1.0.0-*"
}
}
},
"exclude": [
"wwwroot",
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
]
}
ASP.NET 4 / MVC5 project.json是:
{
"version": "1.0.0-*",
"description": "NJsonApiCore Web MVC5 Class Library",
"authors": [ "Rob" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"frameworks": {
"net46": {
"dependencies": {
"Microsoft.Owin": "3.0.1",
"Microsoft.AspNet.WebApi": "5.2.3",
"Microsoft.AspNet.Mvc": "5.2.3"
},
"frameworkAssemblies": {
"System.Web": "4.0.0.0"
}
}
},
"dependencies": {
"NJsonApiCore": "1.0.0-*",
"NJsonApiCore.Web.MVC5": "1.0.0-*"
}
}
在MVC5项目json中,我尝试添加IISExpress命令行选项:
"commands": {
"iisexpress": "c:\\\\Program Files (x86)\\\\IIS Express\\\\iisexpress /path:C:\\Projects\\NJsonApiCore\\src\\NJsonApiCore.Web.MVC5.HelloWorld\\bin /port:12345"
},
虽然应用程序启动,但我收到错误:
System.InvalidOperationException: The current runtime target framework is not compatible with 'NJsonApiCore.Web.MVC5.HelloWorld'.
Current runtime target framework: 'DNX,Version=v4.5.1 (dnx451)'
Version: 1.0.0-rc1-16231
Type: Clr
Architecture: x86
OS Name: Windows
OS Version: 10.0
Runtime Id: win10-x86
[1]: http://i.stack.imgur.com/533jo.png
这表明它正在尝试在dnx中运行我的ASP.NET 4 / MVC 5应用程序,我知道这不会起作用。我的global.json看起来像:
{
"projects": [ "src/NJsonApiCore", "src/NJsonApiCore.Web.MVC6", "src/NJsonApiCore.Web.MVC6.HelloWorld", "test" ],
"sdk": {
"version": "1.0.0-rc1-update1"
}
}
这表明只引用了MVC6姐妹项目。您可以在此处查看完整的树:https://github.com/brainwipe/NJsonApiCore/tree/feature/net462withxproj
我也尝试将MVC5解决方案移出基本目录,但我收到了同样的错误。
是否可以使用project.json和xproj运行ASP.NET 4 / MVC?
答案 0 :(得分:0)
Source link to see more commands
打开命令提示符
转到IIS Express目录(例如:cd \ Program Files \ IIS Express)
iisexpress /?
命令检查iis express的使用字符串
然后有不同的命令在iis express中打开你的网站,如
iisexpress /site:WebSite1
更多命令请访问上面的链接 希望它有所帮助
答案 1 :(得分:0)
答案是:使用project.json和xproj运行ASP.NET 4 / MVC5是否可以不。
解决方法是有两个解决方案(一个.NET 4,一个.NET Core),然后是每个程序集的两个项目文件(.NET 4的csproj和.NET Core的xproj)。 .NET 4解决方案将指向每个程序集的csproj,.NET Core解决方案将指向.xproj。
此外,您需要为.csproj(Github Issue explanation)添加另一个json。其格式为NameOfYourProject.project.json
,并在其中添加.NET依赖项。例如:
{
"version": "1.0.0-*",
"description": "NJsonApiCore Class Library",
"authors": [ "Rob" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"runtimes": { "win": { } },
"frameworks": {
"net452": {
"dependencies": {
"Microsoft.AspNet.Mvc": "5.2.3",
"Humanizer.Core": "2.0.1",
"Newtonsoft.Json": "8.0.2"
}
}
}
}
在.NET Core发布之前,Microsoft announced表示project.json和xproj将被弃用。 Project.json是在.NET平台较小(没有Xamarin)的时候创建的,并将所有平台移动到project.json是不值得的。相反,他们说他们会“解决”csproj的问题。在撰写本文时(2016年7月),这尚未发生,但预计将于2016年底完成。
我们有两个选择。一个是将所有.NET项目移动到使用project.json。这需要我们进行工具工作,触及Visual Studio,Xamarin和Unity等合作伙伴中的所有项目类型。我们必须扩展project.json以支持每个项目类型所需的所有构建方案并提供迁移故事。另一种选择是构建桥接,以便.xproj项目可以引用.csproj项目,而.csproj项目可以引用Visual Studio和Xamarin Studio中的.xproj项目。桥梁也存在挑战,例如,当客户创建项目时,他们现在必须选择.xproj或.csproj,这只会增加更多选择和复杂性。
在查看我们的选择之后,很明显将.NET Core项目移动到.csproj / MSBuild会更容易,因此所有.NET项目都使用相同的工具和构建系统。
当您发生此类更改时,您现在需要重新修改任何修复程序。