以下是如此简单但却失败了。怎么了?
我在Visual Studio 2017中创建了一个新的ASP.NET核心Web应用程序(.NET Framework 4.6.2)。
我没有更改默认模板,而是将其推送到VSTS。
我使用以下两个步骤在VSTS中创建新的构建定义:
我将NuGet步骤更新为使用版本4.0.0
我更新定义以使用Hosted VS2017代理。
我使用VS2017使用默认的MSBuild参数离开Build步骤:
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\".
在以前的版本中,这将创建一个Web部署包,这正是我想要的。
NuGet步骤成功。
构建步骤一直运行,直到记录...
_TransformWebConfig:
......然后......
找不到web.config。创建'C:\ a \ 1 \ s \ src \ WebApp \ obj \ Release \ net462 \ win7-x86 \ PubTmp \ Out \ web.config'
...和...
Microsoft.NET.Sdk.Publish.MSDeployPackage.targets(124,7):错误MSB4184:无法计算表达式“[System.IO.Path] :: GetDirectoryName('')”。这条道路不是合法的形式。
答案 0 :(得分:0)
您可以使用ASP.NET Core(预览版)构建模板,它通过dotnet工具发布.Net Core应用程序。
答案 1 :(得分:0)
我认为以下文章有答案。
https://www.visualstudio.com/en-us/docs/build/apps/aspnet/aspnetcore-to-azure
总之,不要使用Visual Studio进行构建,而是使用CLI,即
dotnet.exe publish -c $(BuildConfiguration)-o $(Build.ArtifactStagingDirectory)
答案 2 :(得分:0)
此问题已修复:https://github.com/aspnet/websdk/issues/106
在VSTS中使用的示例命令行和语法(ASPNET核心模板应该已经在模板中使用了这个):https://github.com/vijayrkn/ASPNetPublishSamples/blob/bff9f78d796668dc07d5e28a8b93531caade839c/Publish.cmd#L102-L127