【问题标题】:how to copy or deploy c# command line project from Visual Studio如何从 Visual Studio 复制或部署 c# 命令行项目
【发布时间】:2013-12-11 16:30:16
【问题描述】:

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

有没有人建议我如何在 Visual Studio 中把它变成一个简单的操作?

这是我尝试过的:

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

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

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

【问题讨论】:

  • 发布向导会将文件放到 UNC 路径中,但它也允许它从那里运行。如果你只是选择用户离线运行并发布,你可以从unc路径执行项目的exe文件,它就可以正常工作了。
  • @Saran - 当我使用发布向导时,我得到了 ClickOnce 部署。我可以运行它,但它似乎是某种安装过程。我看不到 .config 文件或最终的 .exe,我怀疑我是否可以从计划任务中自动执行它。
  • 浏览至 ClickOnce 部署的文件夹,浏览至 ApplicationFiles 并单击正确的版本。 EXE 包含在该文件夹中,但您可以根据需要将文件复制/粘贴到 UNC 的根目录,然后为此安排任务。我更喜欢从特定版本文件夹中运行程序。

标签: c# visual-studio deployment


【解决方案1】:

如果您只需要从输出文件夹中复制 exe/dll,您可以在 Visual Studio 中进行构建后事件并指定 XCOPY 命令将文件夹的输出复制到服务器共享文件夹,例如:

XCOPY $(OutDir) \\Server\folder

如果您不想在每次构建时复制,则必须手动复制服务器中的文件。您可以编写一个批处理文件并在完成后执行该文件。我不知道视觉工作室中有任何直接的方法可以为你做这件事。

【讨论】:

  • 我不想在每次构建后自动部署,只有在我有机会测试它之后。
  • @Korey,在这种情况下你必须手动复制它,我不知道 Visual Studio 中有任何东西可以为你做这件事。您可以编写一个批处理文件,然后在您对应用程序满意后执行该文件。
【解决方案2】:

使用 Post-build 事件来 xcopy 文件。您需要使其成为有条件的,以便仅在选择发布版本时复制。让它看起来像这样:

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-28
      • 2018-06-05
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      相关资源
      最近更新 更多