【问题标题】:MSbuild Website Not Publishing to Local DirectoryMSbuild 网站未发布到本地目录
【发布时间】:2019-08-12 19:23:13
【问题描述】:

我需要将 .NET 网站项目发布到本地目录。该网站项目是解决方案的一部分,该解决方案还包含一个 Web 应用程序。 Visual Studio 中的 Publish Web App 选项将网站发布到目录中没有问题,但是我无法通过 msbuild 发布网站。

我的 msbuild 命令

msbuild "C:\...\ProjectName\website.publishproj" /p:deployOnBuild=true /p:publishProfile=Dev /p:PrecompileBeforePublish=false /p:VisualStudioVersion=14.0 /p:WebPublishMethod=FileSystem

我引用的 dev.pubxml 发布配置文件是:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>True</ExcludeApp_Data>
    <publishUrl>C:\FolderLocation</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
    <ExcludeFoldersFromDeployment>.vs</ExcludeFoldersFromDeployment>
  </PropertyGroup>
</Project>

目前该网站并未发布到C:\FolderLocation,而是似乎发布到ProjectName\PrecompiledWeb\localhost_51636。通过/p:OutDir=C:\FolderLocation 更改输出目录会将web 应用程序 发布到正确的位置,但不会发布网站。我也尝试了/p:PublishDestination 和/p:DesktopBuildPackageLocation msbuild 参数,但原来的问题仍然存在。

我参考了Publish Artifacts for website goes to PrecompiledWeb 和许多其他资源。我的最终目标是通过 Azure Devops 为整个遗留 .NET 网站项目设置 CI。

【问题讨论】:

  • 你在哪里运行 msbuild?我的意思是,您是使用 vs2015 的开发人员命令提示符还是使用 v4.0.30319 文件夹下的“cmd+msbuild.exe”?因为我已经用 leo 的答案进行了测试,并且该命令在我的 VS2015 网站上运行良好。
  • 您好朋友,当您提到“通过 msbuild 发布站点”时,您的意思是在没有 TFS 的情况下在本地使用 msbuild 工具时出现问题。
  • 嗨兰斯。我从C:\Windows\Microsoft.NET\Framework\v4.0.30319 在本地运行 msbuild。当我使用 Leo 的命令时,命令完成,但它不会发布到我的 dev.pubxml 发布配置文件中列出的目录。它似乎改为发布到ProjectName\PrecompiledWeb\localhost_51636。
  • 嗨,朋友,尝试打开 vs2015 的开发者 coomand compt,然后在此处输入命令。我已经看到 v4.0.30319 文件夹下的 msbuild.exe 存在许多问题。请尝试 C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe。(这个版本更适合你)
  • 为了利奥的命令。我们都使用开发者命令提示符运行命令,都成功了。 (而不是v4.0.30319,我认为它不是vs2015的最新版本)

标签: asp.net visual-studio build msbuild


【解决方案1】:

使用 TFS - 它在后台使用 MSBUILD,我们需要此参数来写入要从中提取工件的目录

/p:OutDir=$(build.StagingDirectory)

您只是在告诉它“发布项目”部分 - 看看将您的 SLN 文件放在第一个参数处是否可以解决问题并完成所有问题。

【讨论】:

  • 感谢您的建议。我也尝试过构建 .SLN,但这会产生一个新问题。 Web 应用程序发布到C:\FolderLocation\Projectname\_PublishedWebsites,网站发布到新的目录位置C:\ProjectName_PublishedWebsites。
  • 是的 - 然后您向下导航该结构以找到您想要在虚拟目录中的内容并将其推入。
  • 谢谢马克,我可以从该目录中启动网站。我仍然很困惑为什么 msbuild 使用我上面链接的原始命令忽略来自dev.pubxml 的输出目录。要使用您提供的方法设置 CI 服务器,需要额外的复制命令,并且难以自动化。
  • 看起来您需要使用 Visual Studio 版本 15.2(Visual Studio 2017 更新 2)基于此讨论 github.com/Microsoft/msbuild/issues/1901
猜你喜欢
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-06
相关资源
最近更新 更多