如何从Visual Studio复制或部署c#命令行项目

时间:2013-12-11 16:30:17

标签: c# visual-studio deployment

我一直在手动将dll,exe等从“C#命令行”项目复制到UNC服务器共享,以便由计划任务执行。

是否有人建议我如何将其转换为Visual Studio中的简单操作?

以下是我的尝试:

  1. 发布向导。它询问用户如何安装应用程序,这与我的情况完全无关。我只是想把它放在服务器共享上。

  2. 项目属性 - >发布。这看起来与发布向导几乎相同。

  3. 项目中包含的批处理文件或PowerShell脚本。我没有看到从Visual Studio中启动它的简单方法。

3 个答案:

答案 0 :(得分:2)

如果您只需要从输出文件夹中复制exe / dll,您可以在Visual Studio中创建一个Post-build事件,并指定XCOPY命令将该文件夹的输出复制到您的服务器共享文件夹,如: / p>

XCOPY $(OutDir) \\Server\folder

enter image description here

如果您不想在每个版本上进行复制,则必须手动复制服务器中的文件。您可以编写批处理文件并在完成后执行该文件。我不知道在visual studio中为你做任何直接的方法。

答案 1 :(得分:2)

使用Post-build事件对文件进行xcopy。您需要使其成为条件,因此您只能在选择发布版本时进行复制。看起来像这样:

if not "$(OutDir)" == "bin\Release\" goto skip
xcopy /d /y "$(TargetDir)*.*" \\foo\bar
:skip

答案 2 :(得分:0)

我不想在每个构建事件上进行部署,并且我倾向于始终构建在调试模式中,因此Hans关于将条件置于构建事件中的建议不适合我的情况。

为什么我总是使用调试模式?我的应用很小,供内部使用。性能通常受外部约束的约束,而不是C#代码性能或内存大小。如果它不是一个记住它的状态的下拉菜单,我会更舒服地使用它。当我使用它时,我忘了,然后我一直在发布模式下进行编译,并想知道为什么.exe和.dll没有在Debug文件夹中得到更新。

我的不完美解决方案是在我的项目中包含批处理文件,并手动启动命令shell窗口来运行它们。这不是我想要的解决方案,但对我来说这是最好的妥协。