2012-07-27 27 views
6

我目前在我的项目中使用一个后期构建事件来将我的程序集复制到另一个目录进行调试。这是我的机器本地的,并且仅用于调试目的,所以我宁愿将它放在* .csproj.user文件中,而不是* .csproj文件中。我试图将* .csproj中的负责元素复制到* .csproj.user,但那不起作用。有没有办法在Visual Studio项目中进行用户特定的事前/事后构建事件?

编辑 为了澄清,我不希望把用户的特定命令在生成后事件在* .csproj的文件。相反,我想将后构建事件命令放在* .csproj.user文件中。 (从目前的答案来看,这看起来不可能)

为了给出更多的上下文,它不是一个项目引用。我正在将我的程序集复制到在运行时加载程序集的应用程序的目录中。 (Think插件)

+0

如果它是一个项目的依赖,你应该能够得到它的引用有它来复制。为什么这只是一个本地的东西?你能解释一些问题的根源吗? – Neil 2012-07-27 15:10:24

+0

我在过去完成插件的方式是创建一个依赖于您的dll的虚拟项目并为该插件提供一个输出目录。然后,您可以使用项目选项上的调试选项卡来启动。 – Neil 2012-07-28 15:51:28

回答

6

简短的回答是否定的,而不是你想要的方式:

稍微长一点的答案很简单。您理论上可以为个别用户触发特定的构建事件,但这些事件仍将位于csproj文件中。您可以在构建上运行外部事件,然后允许这些外部事件运行,具体取决于用户在运行它们(作为脚本)。

如果这只是为了调试,我只是插入它们,做你的构建的东西,并把它们上传到你的版本控制系统之前。

+0

我很害怕这个。我显然没有很好地澄清我的问题,因为到目前为止,你是唯一一个看起来明白我的意图的人。 – blachniet 2012-07-27 15:23:38

0

事前/事后构建事件保存在项目文件中。 VS没有提供任何选项。

您可以引入一个自定义(外部)工具来执行这种复制,然后从菜单或宏调用它并调用它。

2

您可以使用具有由环境变量触发的条件的自定义构建target。然后只在你的机器上设置该变量。

2

使用IF语句和(如果需要用双引号)的环境变量

if "$(Username)" == "MyUser" 
    copy /y $(ProjectDir)memcached.$(ConfigurationName).config $(ProjectDir)memcached.config 
相关问题