Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 Visual Studio生成后事件能否与ClickOnce发布一起使用?_Visual Studio 2008_Clickonce_Post Build Event - Fatal编程技术网

Visual studio 2008 Visual Studio生成后事件能否与ClickOnce发布一起使用?

Visual studio 2008 Visual Studio生成后事件能否与ClickOnce发布一起使用?,visual-studio-2008,clickonce,post-build-event,Visual Studio 2008,Clickonce,Post Build Event,在VisualStudio2008中,生成后事件能否与ClickOnce发布一起使用?如果是,怎么做 开箱即用,看起来我只能使用预生成事件,而ClickOnce发布似乎在启动生成后事件之前将项目生成到其他位置。查看Visual Studio使用的MSBuild文件,生成后事件由生成目标运行。如果从命令行运行msbuild并直接调用发布目标,它肯定会首先调用Build。如果右键单击VS中的项目并单击“发布”,则会运行一个名为PublishOnly的精简目标,前提是VS已经完成了构建 Visual

在VisualStudio2008中,生成后事件能否与ClickOnce发布一起使用?如果是,怎么做


开箱即用,看起来我只能使用预生成事件,而ClickOnce发布似乎在启动生成后事件之前将项目生成到其他位置。

查看Visual Studio使用的MSBuild文件,生成后事件由生成目标运行。如果从命令行运行msbuild并直接调用发布目标,它肯定会首先调用Build。如果右键单击VS中的项目并单击“发布”,则会运行一个名为PublishOnly的精简目标,前提是VS已经完成了构建

Visual Studio在发布之前自动生成项目时,应运行生成后事件。在项目属性的“生成事件”选项卡中,是否将事件设置为“始终运行”

如果您想更明确地了解发布之前发生的情况,则发布始终会查找BeforePublish目标,无论它是由MSBuild还是Visual Studio运行的。手工编辑项目文件,在底部您将看到几个注释掉的目标元素。添加您自己的一个,如下所示:

<Target Name="BeforePublish">
    <Exec Condition="'$(PostBuildEvent)' != ''" 
          WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" />
</Target>


这将运行与您在项目中定义的生成后事件相同的事件,但您可以将任何MSBuild任务放在这些目标元素中。

我认为您会发现blog post很有用。它讨论了为每种部署类型提供不同的app.config文件。

因此,我的构建事件是复制正确的app.config(我有一个dev、test和prod版本)并对其进行加密。生成后事件确实触发(谢谢),但我发现没有将此app.config复制到发布清单中,它似乎从项目中选择了原始app.config。ClickOnce将发布项目中任何生成操作为“Content”的内容,因此请确保源app.config的生成操作为None。这不会阻止生成将app.config重命名为MyApp.exe.config。ClickOnce将获取exe.config,因为生成将其列为输出。如果替换BeforePublish目标中Debug/Release文件夹中的exe.config,ClickOnce应选择加密版本。@Ray。。。但问题是ClickOnce并没有从调试/发布文件夹中获取exe.config。它是从“应用程序配置”中选择的。这是在ClickOnce发布会话期间Visual Studio的输出窗口中的一行:将文件从“App.config”复制到“.\..\..\bin\MEO\u D\u E\u Release\App.publish\Application Files\EMS.OCC600.Infrastructure.Shell\u 1\u 0\u 4\u 28\EMS.OCC600.Infrastructure.Shell.exe.config”。该链接不再有效。