问题标签 [msbuild-wpp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
394 浏览

visual-studio-2012 - 通过 WPP deploy.cmd 运行 PreSync/PostSync 命令

我试图弄清楚如何使用 VS/MSBuild 生成的 deploy.cmd 运行 pre/post 命令。我知道可以使用 msbuild 在命令行上设置一些 pre/postsync 命令,但这在 x.deploy.cmd 内的 web 部署包中是固定的。

如何自定义此文件的输出,以便可以使用特定参数运行部署命令?

目的是让非开发人员获取压缩包 zip 文件并将应用程序导入 IIS。我们使用 IIS 托管一些 Windows 服务,因此为了能够部署,我们需要在部署前停止并卸载服务,然后在部署后阶段安装重新启动。

对于某些服务器,我们允许从 TFS 自动部署并使用 msbuild WPP 管道的 .targets 文件挂钩此 pre/post 命令。但是,我们希望它可用于手动部署命令文件。

0 投票
1 回答
687 浏览

visual-studio-2013 - Determine port for SSDT publish in VS 2013

How can I determine the port that is being used when I publish an SSDT project from Visual Studio 2013?

I need to know the port to troubleshoot an access issue. I looked at the Advanced Properties for the connection, but I couldn't find that information.

Advanced Properties

0 投票
3 回答
2047 浏览

asp.net - pubxml web 发布工具 事件生命周期

我正在使用 Visual Studio 2012 中的 Web 发布工具发布到文件系统。我了解到我可以在 Properties 文件夹中打开我的 *.pubxml 来做更高级的事情。

我想要做的是在发布任务结束时运行命令行应用程序。我通常会在自定义目标中执行它,并在这样的事件中构建之一之后执行它。

问题是这GatherAllFilesToPublish太早了,因为我想在发布完成后最后执行它。是否有一个列表或者是否有人知道内置事件以及它们被触发的顺序?基本上是文件系统网络发布的事件生命周期。

或者我如何在最后手动触发目标?

我尝试了以下但没有成功:

而且每个人都是单独的。那么发布生命周期的最后一个钩子是什么?

---> 已编辑我已经添加了跟踪。问题是文件被复制到临时路径,然后所有文件都被删除。"GatherAllFilesToPublish"因此,在此处从命令行窗口查看我的跟踪后,复制到目标将不起作用...

谢谢你的帮助。

0 投票
1 回答
1369 浏览

c# - 如何使用 targets.wpp 更改 Web.Config 的应用程序设置

我创建了一个 wpp.targets 文件,它在 azure 中完成所有部署。我想在部署期间将 webconfig 的 appsetting 属性更改为 azure。我在http://sedodream.com/PermaLink,guid,25ddd39e-59de-4e35-becc-de19dcc5e4ea.aspx找到了一个样本,它使用了 pubxml 和 parameters.xml。我想使用 wpp.targets 而不是 pubxml。

需要在部署期间将客户值更新为“客户端”,并且 web.config 文件应反映已部署文件夹中的更改,如下所示

回答

我已经在 msDeploy 中使用ProjectParametersXMLFile

0 投票
0 回答
56 浏览

msbuild - 为解决方案中的特定 Web 项目禁用 MSBuild WPP

我有一个包含多个项目的 Visual Studio 解决方案,其中两个被配置为 Web 应用程序。

项目 A 用作类库,但它包含 TypeScript 文件。为了将 .ts 文件编译成 .js 文件,更新了 .csproj 文件,以便它导入 Microsoft.WebApplication.targets 以及 Microsoft.TypeScript.targets。(生成的 .js 文件配置为“嵌入式资源”)。

项目 B 是一个常规的 Web 应用程序,并引用了项目 A。

编译msbuild /p:DeployOnBuild=true会导致在两个项目上调用 Web 发布管道(打包内容)。

有没有办法阻止(或最小化)WPP 在项目 A 上运行?

0 投票
1 回答
62 浏览

visual-studio-2013 - Parameters.xml - 包含许多参数的最佳方式是什么?

我们有几个想要部署 webapp 的环境。我们希望在我们的项目中包含一系列setparameters.xml文件,当我们执行 Web 发布管道 (wpp) 时,我们希望将这些文件复制到目标文件夹中。我们需要添加哪些内容wpp.targets

我们正在使用 Visual Studio 2013 / 2015。

0 投票
1 回答
573 浏览

msbuild - 如何在自动部署场景中通过命令行覆盖 pubxml 设置?

使用 msbuild 命令行实用程序发布 Web 应用程序时,我指定了一个发布配置文件名称,例如“dev”,它对应于项目的 Properties/PublishProfiles 目录中的“dev.pubxml”文件。该文件包含发布到我们的开发环境的设置。

默认情况下,Project/PropertyGroup/LaunchSiteAfterPublish 中的 XML 节点包含值“True”。有没有办法可以通过命令行将其设置为 false,或者我必须在构建引擎中编写一个脚本来在调用 msbuild 之前编辑 XML 文件?


我为什么要这样做:如果我从 Visual Studio 发布,我希望它打开网页进行测试。如果构建是自动化的并从命令行运行,那么我不希望构建自动化系统打开网页。

0 投票
2 回答
466 浏览

msbuild - MSBuild 忽略 *.wpp.target 内部的更改

我有以下 *.wpp.target 文件:

如果我第一次从 Visual Studio 17 中运行它,Media 文件夹将被忽略且未发布。当我用 ExcludeFromPackageFolders 节点评论该行并再次发布后,媒体文件夹仍然被忽略。似乎 Visual Studio 或 msbuild 不会刷新 *.wpp.target 文件中所做的更改。我在这里想念什么还是 VS 或 MSbuild 有问题?

0 投票
0 回答
568 浏览

visual-studio-2017 - 如何为 .NET Core 应用程序扩展 msdeploy/publishing 管道

Visual Studio 中的旧式/.NET Framework webapps 有一个可以自定义的发布管道。例如,Parameters.xml可以指定一个文件,如下所示:

以便在构建MSDeploy包时,将其中定义的MSDeploy参数并入包中。Web 处理管道(主要在 中定义C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\Web\Microsoft.Web.Publishing.targets)支持以多种方式自定义 MSDeploy 包 - 例如,可以在文件或 MSBuild 中定义包参数<ItemGroup>

在 SDK 风格的 webapps(例如 ASP.NET Core webapps)中,一个“新的”发布管道被使用在例如C\Program Files\dotnet\sdk\2.1.2\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Publish.targets. 这会根据<PublishProtocol>值提取其他目标文件,例如C\Program Files\dotnet\sdk\2.1.2\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeploy.targetsforPublishProtocol=MSDeploy.\Microsoft.NET.Sdk.Publish.MSDeployPackage.targetsfor PublishProtocol=MSDeployPackage。这两个文件都将_CreateParametersFiles目标定义为:

似乎不支持自定义部署参数。同样,<Target Name="_CreateManifestFiles">目标似乎禁止定制。

WPP(Web Publishing Pipeline - 以前的实现)很/很笨重,但是有关于如何自定义它的文章/博客文章。使用 ASP.NET Core,没有提及自定义或扩展部署过程,我可以找到。我确实在 ASP.NET Publishing 上找到了 Channel 9 Video,但它似乎已经过时了——它适用于 VS 2017,其中 project.json 和 powershell 脚本用于部署,而且它似乎已被废弃以支持 MSBuild 目标。

我也确实找到了https://github.com/aspnet/websdk/blob/dev/README.md#microsoftnetsdkpublish,其中记录了可以更改的 msdeploy 设置的一些部分,但我仍然会声明不支持用于延长管道。

我将缺乏可用信息解释为“自己弄清楚”,这在处理 MSBuild 和 MSDeploy 时具有挑战性。有没有人成功自定义 ASP.NET Core webapps 的部署管道?

0 投票
2 回答
1437 浏览

c# - 发布干净的解决方案时忽略 *.wpp.targets

当我首次发布包含 ASP.NET Web 应用程序的解决方案时,会忽略 .wpp.targets 文件。发布文件夹还包含不应发布的文件。

删除我的发布文件夹中的所有文件并再次发布后,一切都很好。但是当我从视觉工作室做一个干净的解决方案时,.wpp.targets 文件再次被忽略。

希望有人可以解决这个问题或解释为什么会这样。我想在我们的构建服务器上使用它,构建总是从一个干净的解决方案开始。

我用过的:

MSBuild 版本 15.8.166 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" WebApplication1.sln /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p :WebPublishMethod=文件系统 /p:publishUrl=C:\test

MSBuild 版本 16.0.360 "C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\MSBuild\Current\Bin\msbuild.exe" WebApplication1.sln /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p :WebPublishMethod=文件系统 /p:publishUrl=C:\test

我使用包含我的项目名称的 wpp.target 文件运行构建,但我也尝试使用以下 MSBuild 参数:/p:WebPublishPipelineCustomizeTargetFile=C:\Users\username\source\repos\Test\WebApplication1\test .wpp.targets


更新

首次构建项目时或清理构建后,*.wpp.targets 文件中的通配符不起作用。这是我的 *.wwp.targets 文件的示例:

正如预期的那样,罗斯林被排除在外。但不排除 Newtonsoft.*,因为名称中有通配符。

当手动删除 obj 文件夹或之前执行构建时,通配符也可以正常工作。

我用过的:MSBuild 15.8.166 版和 MSBuild 16.0.360 版

使用的 msbuild comando 示例:“C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\MSBuild\Current\Bin\msbuild.exe”WebApplicationTestForMsBuild.sln /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=文件系统 /p:publishUrl=C:\test

在其他项目中,我们注意到某些通配符似乎适用于大多数文件,但并非适用于所有文件。这方面的一个例子是: " <ExcludeFromPackageFiles Include="bin\*.pdb">" 最多的 pdb 文件或排除但不是全部。

我想在我们的构建服务器上使用它,构建总是从一个干净的解决方案开始。这个问题似乎是 msbuild 中的一个错误,但如果您知道解决方案,请与我分享。


更新 2

我执行的一项测试的步骤:

  1. 在 Visual Studio Enterprise 2017(版本 15.9.7)中创建一个新的 Empty ASP.Net Web Application (.NET Framework 4.6.1) 项目。
  2. 将 [ProjectName] .wpp.targets 添加到包含前面描述的数据的项目中。
  3. 安装nuget包Newtonsoft.Json(版本12.0.1)(用作示例)
  4. 我在命令提示符下运行以下命令:“C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe” [projectName].csproj /p:DeployOnBuild=true / p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:publishUrl=C:\test /p:DeleteExistingFiles=True
  5. 我查看了 C:\test\bin 文件夹,发现了以下文件:
    • Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
    • Newtonsoft.Json.dll
    • 牛顿软件.Json.pdb
    • [项目名称].dll
    • [projectName].pdb 但不应发布 Newtonsoft.Json.dll 和 Newtonsoft.Json.pdb 文件。
  6. 我再次运行 msbuild 命令,它按预期工作。我在发布文件夹中只有以下文件:
    • Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
    • [项目名称].dll
    • [项目名称].pdb
  7. 我在我的 Visual Studio 实例中或通过 msbuild 命令做了一个干净的解决方案:“C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe”WebApplication7wpp.csproj -target:干净的
  8. 再次运行 msbuild build 命令并再次添加 Newtonsoft 文件。

当我不使用通配符时, wpp.targets 按预期工作。