如何在project.json中的ASP.NET 4.6.2上运行IISExpress命令

时间:2016-05-18 08:40:29

标签: asp.net asp.net-mvc asp.net-mvc-5

我需要在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-*"
  }
}

编辑 - 尝试通过IIS Express

运行

在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?

2 个答案:

答案 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"
      }
    }
  }
}

Project.json和Xproj已过时

在.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项目都使用相同的工具和构建系统。

     

Quote Reference

当您发生此类更改时,您现在需要重新修改任何修复程序。

相关问题