Visual studio 2017 VST无法构建;错误MSB4184:表达式“0”;[System.IO.Path]::GetDirectoryName(';';)";无法评估。该路径不是合法形式

Visual studio 2017 VST无法构建;错误MSB4184:表达式“0”;[System.IO.Path]::GetDirectoryName(';';)";无法评估。该路径不是合法形式,visual-studio-2017,azure-pipelines,Visual Studio 2017,Azure Pipelines,我正在尝试构建我的.Net核心解决方案,但我收到了这些我无法理解的错误消息 2017-05-22T14:30:56.2490242Z _TransformWebConfig: 2017-05-22T14:30:56.2490242Z No web.config found. Creating 'd:\a\1\s\SIR\obj\Release\net452\win7-x86\PubTmp\Out\web.config' 2017-05-22T14:30:56.2830092Z ##[erro

我正在尝试构建我的.Net核心解决方案,但我收到了这些我无法理解的错误消息

2017-05-22T14:30:56.2490242Z _TransformWebConfig:
2017-05-22T14:30:56.2490242Z   No web.config found. Creating 'd:\a\1\s\SIR\obj\Release\net452\win7-x86\PubTmp\Out\web.config'
2017-05-22T14:30:56.2830092Z ##[error]C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeployPackage.targets(124,7): Error MSB4184: The expression "[System.IO.Path]::GetDirectoryName('')" cannot be evaluated. The path is not of a legal form.
2017-05-22T14:30:56.2830092Z ##[debug]Processed: ##vso[task.logissue type=Error;sourcepath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeployPackage.targets;linenumber=124;columnnumber=7;code=MSB4184;]The expression "[System.IO.Path]::GetDirectoryName('')" cannot be evaluated. The path is not of a legal form.
2017-05-22T14:30:56.2830092Z C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeployPackage.targets(124,7): error MSB4184: The expression "[System.IO.Path]::GetDirectoryName('')" cannot be evaluated. The path is not of a legal form. [d:\a\1\s\SIR\Properties.API.csproj]
2017-05-22T14:30:56.2830092Z ##[debug]Processed: ##vso[task.logdetail id=43c372fe-1339-4917-bfb2-2d3438740b01;parentid=e8365874-6f54-4a8c-a31f-62c69bcfdb57;type=Build;result=Failed;finishtime=2017-05-22T14:30:56.2790105Z;progress=100;state=Completed;parentid=e8365874-6f54-4a8c-a31f-62c69bcfdb57;name=;]
2017-05-22T14:30:56.2830092Z Done Building Project "d:\a\1\s\SIR\Properties.API.csproj" (default targets) -- FAILED.

使用缺少
DesktopBuildPackageLocation
属性的发布配置文件生成msdeploy包时,会发生此错误

请确保您的发布配置文件包含此属性,也可以与交叉检查

作为参考,msdeploy软件包发布配置文件示例(来自上面的链接)如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>Package</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <DesktopBuildPackageLocation>c:\DeployedApp\WebDeployPackage.zip</DesktopBuildPackageLocation>
    <DeployIisAppPath>Default Web Site/WebAppWithDB</DeployIisAppPath>
  </PropertyGroup>
</Project>

包裹
释放
任何CPU
c:\DeployedApp\WebDeployPackage.zip
默认网站/WebAppWithDB

我遇到了与VSTS中默认ASP核心模板构建相同的问题。我没有发布配置文件,因为我正在通过VSTS CI模板管理构建。我发现这个问题的答案解决了我的问题

我用.NET核心(预览)任务替换了Visual Studio生成任务,并使用了dotnet发布命令

参考以下步骤:

  • 添加NuGet安装程序(4.0.0)任务以还原包
  • 添加Visual Studio生成任务(解决方案:
    ***.sln
    ;MSBuild参数:
    /t:[projects]/p:DeployOnBuild=true/p:WebPublishMethod=Package/p:PackageAsSingleFile=true/p:SkipInValidConfiguration=true/p:PackageLocation=“$(Build.artifactStaginDirectory)\\App1”
    注意:项目是该解决方案中的通用.net framework项目,例如/t:project1;项目2
  • 添加.NET核心任务(命令:
    publish
    ;取消选中发布Web项目选项;项目:
    $(build.sourcesdirectory)/*Core*.csproj
    (将添加到核心项目的名称中);参数:
    -o“$(build.artifactstagindirectory)\\App2”
  • 添加发布生成工件任务

  • 此问题已修复:


    要在VST中使用的命令行和语法示例(核心模板应该已经有了):

    我的解决方案包含一个核心Web API,但也使用.Net framework,因此我想我无法使用您的解决方案。VSTS任务应该适用于任何使用.Net核心framework的项目。该命令也可以修改为针对特定的框架。我目前处于构建阶段,在这之前不会考虑部署。因此在VS中TS我正在使用可视化界面配置生成设置,但我还没有遇到DesktopBuildPackageLocation。看起来有东西从某个地方传递过来了
    /p:DeployOnBuild=true
    ,还有一个发布配置文件。因此,请查看确切的生成参数这解决了我的问题,尽管我正在询问另一个问题问题;关键更正是将项目添加到构建点2中。好的,我进行了另一次提交,但该错误在日志文件中的同一位置再次出现。肯定不是我的代码更改导致了这一错误,但可能是什么原因?当我单击错误时,我看到另一个错误;找不到路径/C:/Program文件(x86)/Microsoft Visual Studio/2017/Enterprise/MSBuild/Sdks/Microsoft.NET.Sdk.Publish/build/netstandard1.0/PublishTargets/Microsoft.NET.Sdk.Publish.MSDeployPackage.targets位于Commit bae4ef1c,或者您没有权限根据生成日志,它仍然生成Properties.API项目。是否将Properties.API项目引用添加到SIR.WebUI?尝试创建创建发布配置文件,然后使用该发布配置文件/p:DeployOnBuild=true/p:PublishProfile=“[profile name]”DesktopBuildPackageLocation=“$(build.artifactstagingdirectory)\WebUI.zip”发布它是构建失败,而不是部署失败。它在构建包时失败。这正是它失败的地方。目标应为“DesktopBuildPackageLocation”而不是“PackageLocation”,并且失败,因为“DesktopBuildPackageLocation”值为空。在您的情况下,是的,但我的问题-现在已通过anks to@starain MSFT与您的不同。我专门讨论了此错误消息的修复。很高兴知道您遇到的问题已修复。2017-05-22T14:30:56.2830092Z:\Program Files(x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Sdk\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeployPackage.targets(124,7):错误MSB4184:无法计算表达式“[System.IO.Path]::GetDirectoryName(“”)”。路径不是合法形式。[d:\a\1\s\SIR\Properties.API.csproj]