在Visual Studio 2008中,ClickOnce发布可以使用后构建事件吗?如果是这样,怎么样?Visual Studio发布构建事件可以与ClickOnce发布一起使用吗?
开箱即用,它看起来像我只能用预生成事件和ClickOnce的发布似乎该项目建到不同的位置,启动后生成事件之前。
在Visual Studio 2008中,ClickOnce发布可以使用后构建事件吗?如果是这样,怎么样?Visual Studio发布构建事件可以与ClickOnce发布一起使用吗?
开箱即用,它看起来像我只能用预生成事件和ClickOnce的发布似乎该项目建到不同的位置,启动后生成事件之前。
望着的MSBuild文件的Visual Studio使用,后生成事件被构建目标运行。如果您从命令行运行msbuild并直接调用发布目标,它肯定会首先调用Build。如果在VS中右键单击该项目并单击发布,则假定VS已经完成构建,则会调用一个名为PublishOnly的裁剪目标。
你后生成事件应该由Visual Studio中运行时,它会自动建立之前出版项目。在项目属性的“生成事件”选项卡中,是否将事件设置为“始终运行”?
如果你想更加明确之前,出版发生了什么,有一个BeforePublish目标是发布总是寻找,无论是通过的MSBuild或Visual Studio运行。手动编辑您的项目文件,在底部您会看到一些注释掉的目标元素。加入这样的一个你自己的:
<Target Name="BeforePublish">
<Exec Condition="'$(PostBuildEvent)' != ''"
WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" />
</Target>
这将运行在您的项目中的定义相同后生成事件,但你可以把任何的MSBuild任务的目标元素中。
我想你会发现博客文章Tricks with app.config and ClickOnce deployment有用。它讨论每种部署类型都有不同的app.config
文件。
这很有帮助,谢谢。 – 2012-11-01 17:28:52
所以我生成事件是复制正确的app.config(我有一个开发,测试和生产线的版本),并对其进行加密。后构建事件会触发(谢谢),但我发现不会将此app.config复制到发布清单中,它似乎从项目中选择原始的app.config。 – Brad 2010-10-12 16:52:24
ClickOnce将发布任何内容为“内容”的构建操作的项目,因此请确保您的源app.config的构建操作为无。这不会阻止app.config通过构建重新命名为MyApp.exe.config。 ClickOnce将选择exe.config,因为构建将其列为输出。如果您在BeforePublish目标中的Debug/Release文件夹中替换exe.config,ClickOnce应该选取您的加密版本。 – 2010-10-13 17:22:33
@Ray ...但问题是ClickOnce不从调试/发布文件夹中提取exe.config。它正在从“应用程序配置”中选择它,不管它是什么。这是一个ClickOnce发布会话期间从Visual Studio的输出窗口线:从 “的App.config” 复制文件” .. \ .. \ .. \ BIN \ MEO_D_E_Release \ app.publish \应用程序文件\ EMS.OCC600.Infrastructure。 Shell_1_0_4_28 \ EMS.OCC600.Infrastructure.Shell.exe.config”。 – 2012-11-01 17:05:56