2013-08-25 65 views
1

我正在使用Windows XP中的Monodevelop 4开发一个项目,并且我需要在构建后将一些.dll库文件复制到某个文件夹中。这些库是一个主项目的插件,所以主项目不依赖于他们,他们需要手动复制。Monodevelop在Windows XP中构建项目后在自定义命令中创建一个目录

但是,由于我们使用的是电脑,实际上并没有什么需要手动完成的,所以我在项目设置中转向了Monodevelop的Custom Commands。在那里我可以输入任何我喜欢的命令(据推测)。

这就是我所做的;首先,我增加了一个命令,以确保目标文件夹存在:

mkdir "${SolutionDir}\MainProj\bin\${ProjectConfigName}\Plugins" 

,然后复制库:

xcopy "${TargetFile}" "${SolutionDir}\MainProj\bin\${ProjectConfigName}\Plugins" /Y 

但事实是,第一个命令失败,那么第二个根本不会执行。看到我检查并重命名为Run on external consolePause console ouput这里复选框的第一个命令的结果是它的输出:

'"mkdir"' is not recognized as an internal or external command, 
operable program or batch file. 
Press any key to continue . . . 

在IDE的输出面板我可以读mkdir "C:\Some\Path\MainProj\bin\Debug\Plugins"这是正确的,当我把它粘贴到一个控制台创建文件夹成功,所以我不知道为什么Monodevelop无法执行它!

有没有人对这个问题有任何评论?

+0

无法重现。没有任何XP机器。但是,小黑客呢?在主项目中创建一个名为“插件”的目录。将任意文本文件(README.txt)放入它 - >右键单击文件 - >快速属性 - >复制到输出目录。这将在目标目录中创建名为“插件”的目录。 – x2bool

+0

感谢您的建议,但我设法使用批处理文件解决问题。我会把它作为答案发布。 – Mehran

回答

0

我自己找到了解决方案。我创建了一个batch文件,其中包含mkdir命令,并在项目的Custom Commands中调用它。

0

我能够通过使用xcopy代替copy并提供完整路径xcopy.exe在Xamarin工作室(版本4.2.5),以解决此问题:

"%systemroot%\system32\xcopy.EXE" /y "${ProjectDir}\myAppSettings.config" "${TargetDir}" 

一些实验后,似乎Xamarin工作室/ MonoDevelop的:

  1. 包裹整个自定义命令在双引号,和
  2. 包括逻辑:尝试以“不当”的方式处理你,包括额外的双引号。 (我尝试的注射技术撤消报价。)

这具有渲染internal shell commands不可执行的副作用 - 因为copy变得"copy",这不是有效的命令。它解释了为什么将所有内容移到批处理文件中也解决了这个问题 - 现在有一个物理文件(物理路径)可以执行。

相关问题