Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们可以使用Kudu将C#7 web应用部署到Azure吗?_C#_Azure_Azure Web App Service_Visual Studio 2017_C# 7.0 - Fatal编程技术网

我们可以使用Kudu将C#7 web应用部署到Azure吗?

我们可以使用Kudu将C#7 web应用部署到Azure吗?,c#,azure,azure-web-app-service,visual-studio-2017,c#-7.0,C#,Azure,Azure Web App Service,Visual Studio 2017,C# 7.0,由于Visual Studio 2017已经发布,我们可以使用新的C#7功能,我预计在Azure Web应用程序上部署时,这将起作用 不幸的是,我们在使用连续部署(kudu git deploy)时看到编译错误,因此Azure似乎还不支持新的工具链 除了直接发布程序集之外,我们现在还可以做些什么来让它工作吗?添加Microsoft.Net.CompilersNuGet包修复了这个问题。因为我们在Azure中还没有msbuild15。 如果您想使用具有持续集成的c#7功能,您可能需要一些变通方法

由于Visual Studio 2017已经发布,我们可以使用新的C#7功能,我预计在Azure Web应用程序上部署时,这将起作用

不幸的是,我们在使用连续部署(kudu git deploy)时看到编译错误,因此Azure似乎还不支持新的工具链


除了直接发布程序集之外,我们现在还可以做些什么来让它工作吗?

添加
Microsoft.Net.Compilers
NuGet包修复了这个问题。

因为我们在Azure中还没有msbuild15。 如果您想使用具有持续集成的c#7功能,您可能需要一些变通方法

  • 对于dotnet核心web解决方案,您可以在Azure中构建它,即用即用。(它使用自己的
    dotnet msbuild.dll
    )[]
  • 对于asp.net web解决方案,您需要将
    Microsoft.net.Compilers
    2.0+nuget软件包添加到应用新语言功能的项目中。例如,如果解决方案中的类库使用新语法,则需要将nuget包添加到该库项目中。(如果您引用此nuget包,则会导入新的c#编译器)[]
  • 最后,对于混合解决方案(dotnet core web app+.NET framework类库),您需要为.NET framework库项目独立运行
    nuget restore
    ,因为
    dotnet restore
    不是向后兼容的,它无法从旧的构建系统中恢复项目。我通过黑客攻击我的
    deploy.cmd
    []
  • 这些变通方法要么尝试
    模拟msbuild15(case1:
    dotnet msbuild.dll
    ,case2:编译器作为nuget包)
    或者模仿nuget4.0(案例3:同时运行
    dotnet restore
    nuget3.5 restore


    我们正在为Azure构建这些工具,它们很快就会面世。您可以随时更新,正如@joshuanapoli在接受答案场景中指出的那样#2仅适用于Microsoft.Net.Compilers v2.4.0及以下版本。


    我花了几个小时才注意到并弄明白。

    您使用的是Kudu的本地版本吗?不,我们只是向Github提交,这会触发Azure使用Kudu获取更改。哦,我想知道他们是否还没有更新到Azure上的最新构建工具。从日志中可以看出运行的是哪个版本的MSBuild吗?是的,它运行的是版本14.0。我已经检查了文件夹(
    D:\ProgramFiles(x86)\MSBuild
    ),它不包含更新的版本。可以吗?在我们的测试中,这是因为编译器来自一个NuGet包。c#7功能在VS2017中没有问题,只有在部署出现问题时才起作用。如果从Github部署,这对我不起作用错误消息是什么?我们还从Github进行了部署,这为我解决了这个问题。对于“classic.NET”(在我的例子中是针对.NET 4.5),添加
    Microsoft.NET.Compilers
    似乎可以做到这一点——但请注意,所有使用C#7语法的项目都需要添加包,仅将其添加到web项目是不够的添加Microsoft.Net.Compiler可以解决此问题。。。但是会显著降低构建速度!!令人沮丧的是:(@Subgurim msbuild-15.3-preview已经在Azure west us2中,这个构建工具很快就会在任何地方都可以使用。太棒了!我希望它能被正确地宣布;)场景#2对我来说适用于Microsoft.Net.Compilers v2.4.0,但不是v2.6.0(我仍然看到缺少msbuild 15的错误)。@joshuanapoli谢谢你的提示。今天花了大约3个小时让Kudu部署我的应用程序;我将Microsoft.Net.Compilers v.2.10.0降级为2.4.0,成功了。watashiSHUN-你知道为什么有必要降低这个nuget包的级别,让它在全新的azure应用服务计划中发挥作用,让kudu使用c#7元组构建一个.net 4.7吗?