在 Visual Studio 2008 中,可以将后期生成事件与 ClickOnce 发布一起使用吗?如果是这样,怎么做?
开箱即用,看起来我只能使用预构建事件,而 ClickOnce 发布似乎在构建后事件启动之前将项目构建到不同的位置。
在 Visual Studio 2008 中,可以将后期生成事件与 ClickOnce 发布一起使用吗?如果是这样,怎么做?
开箱即用,看起来我只能使用预构建事件,而 ClickOnce 发布似乎在构建后事件启动之前将项目构建到不同的位置。
查看 Visual Studio 使用的 MSBuild 文件,构建后事件由构建目标运行。如果从命令行运行 msbuild 并直接调用 Publish 目标,它肯定会先调用 Build。如果您在 VS 中右键单击项目并单击“发布”,则会运行一个名为 PublishOnly 的精简目标,假设 VS 已经完成了构建。
当 Visual Studio 在发布之前自动构建项目时,您的构建后事件应该由它运行。在项目属性的 Build Events 选项卡中,您是否将事件设置为“始终运行”?
如果您想更明确地了解发布之前发生的情况,Publish 总是会寻找一个 BeforePublish 目标,无论它是由 MSBuild 还是 Visual Studio 运行的。手动编辑您的项目文件,在底部您将看到几个已注释掉的 Target 元素。像这样添加您自己的一个:
<Target Name="BeforePublish">
<Exec Condition="'$(PostBuildEvent)' != ''"
WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" />
</Target>
这将运行您在项目中定义的相同构建后事件,但您可以将任何 MSBuild 任务放在这些 Target 元素中。
我认为您会发现博客文章Tricks with app.config 和 ClickOnce 部署很有用。它讨论了app.config
为每种类型的部署使用不同的文件。