【问题标题】:Deploying a Console Application by only copying the Bin Directory仅通过复制 Bin 目录来部署控制台应用程序
【发布时间】:2014-01-09 05:51:54
【问题描述】:

我想要一个控制台应用程序的部署过程,类似于 Web 部署。我正在寻找一种通过VS部署过程将“Release”目录的所有内容复制到网络共享目录的方法。

我知道,这看起来很奇怪,但是,这些应用程序用于内部作业的批处理。但是,他们必须经历开发过程,dev,uat,production。由于我们的过程只是复制/粘贴而不是安装,因此我仅限于这个过程。从 UAT 环境复制/粘贴的问题是我们获取的是 UAT 服务器设置而不是生产环境。我试图在不让我们的部署团队做太多思考的情况下尽可能提高效率。

所以主要问题:从 Visual Studio 部署控制台应用程序的过程是什么,其结果本质上是从 Release 目录复制/粘贴到远程服务器上的目标目录?

【问题讨论】:

  • 这是 .net 控制台应用程序还是本机 (C\C++)?
  • 对不起。澄清一下,这将适用于 .net 应用程序。
  • @IAmCoder 我仅使用Release文件夹就部署了许多控制台应用程序...

标签: .net deployment visual-studio-2012 console-application


【解决方案1】:

我认为您的要求是混合的:

  1. 如何转换配置文件以针对特定环境
  2. 如何自动复制二进制文件和转换后的配置文件

VS Publish 按钮两者兼而有之。

对于#1,您需要为每个目标环境和一个转换文件定义一个编译配置。非网络应用可以使用App.Config Transformation for projects which are not Web Projects in Visual Studio 2010? 中描述的插件。

对于#2,有很多解决方案:您可以制作自己的加载项来添加发布按钮,或挂钩标准构建过程(请参阅https://www.simple-talk.com/dotnet/.net-tools/extending-msbuild/)或简单地将 VS 解决方案的构建包装在脚本中编译后进行部署。更完整的过程是实现一个持续的集成服务器,允许在构建和部署过程中创建不同的环境配置。

【讨论】:

    【解决方案2】:

    这取决于您的应用程序是否引用任何外部资源,如文件、注册表设置、其他应用程序和库等。远程服务器必须具有相同的资源、相同的环境才能使应用程序正常工作。应用程序本身可以复制到任意位置。

    【讨论】:

    • 应用程序确实引用了其他库等。但是,在构建过程中,应用程序需要运行的所有内容都被复制到 Debug/Release 目录中。我需要的是从发布目录复制到任意目录然后完成的发布过程。最好的方法是什么?
    • 只需复制Release目录的内容即可。您可以在本地尝试 - 将 Release 目录的内容复制到不同的位置并尝试运行程序。如果它需要的一切确实在 Release 目录中,它就不会崩溃。但这真的取决于你的程序做什么。可能有诸如防火墙规则、machine.config 设置之类的东西。有时甚至控制台应用程序也可能需要安装程序。
    • 目前的方法是复制目录——这很好用。我正在寻找的是一种利用 VS Publish 功能的方法。我想简单地点击发布并将配置文件夹的内容复制到我们为项目目录建立的任何文件夹中。这样做的最佳方法是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 2023-02-18
    • 2018-04-11
    • 1970-01-01
    • 2014-01-24
    相关资源
    最近更新 更多