c# - 从两个不同的位置安装 ClickOnce 应用程序

标签 c# .net-3.5 deployment msbuild clickonce

我有一个在 .NET Framework 3.5 Service pack 1 中使用 C# 开发的 Windows 窗体应用程序。该应用程序可以基于开发数据库和生产数据库发布。我正在使用 MSBuild 社区任务来发布我的应用程序。将应用程序发布到不同位置(即开发位置和生产位置)时,我没有遇到任何问题。

问题:

  1. 将开发应用程序安装到我的机器后,我无法安装生产应用程序。它给我一个错误说:

    You cannot start application TEST from this location because it is already installed from a different location

  2. 问题:机器如何理解我正在尝试安装相同的应用程序?我假设它有某种应用程序 ID。如果是这样,我可以根据位置覆盖相关值。 (开发或生产)

    在我的应用程序的项目文件中发布时的当前代码:

    <Choose>
        <When Condition=" '$(BuildEnvironment)' == 'DEV' ">
          <PropertyGroup>
            <PublishDir>\\A\B\development\</PublishDir>
            <BaseConnection>Data Source=SQL-DEV.company.com; Database=TEST;Uid=XYZ;Pwd=ABC;</BaseConnection>
    
          </PropertyGroup>
        </When>
    
        <When Condition=" '$(BuildEnvironment)' == 'PROD' ">
          <PropertyGroup>
            <PublishDir>\\A\B\production\</PublishDir>
            <BaseConnection>Data Source=SQL-PROD.company.com;; Database=TEST;Uid=XYZ;Pwd=ABC;</BaseConnection>
    
          </PropertyGroup>
        </When>
    </Choose>
    

    应用程序的发布就像一个魅力并指向相关的数据库。我现在想要做的就是能够在同一台机器上毫无错误地安装开发应用程序和生产应用程序。

  3. 问题:单击一次应用程序与其他应用程序的区别是什么?

最佳答案

所以我终于想通了如何部署同一个应用程序的不同版本。缺少应用程序 list 文件 deploymentProvider attribute of the deployment element.

在应用程序 list 中添加部署元素的部署提供程序属性后,我能够从不同位置安装我的应用程序。但这里的问题是它覆盖了以前安装的应用程序。对于这个问题,我关注了this tutorial将我的开发应用程序与生产应用程序区分开来。

现在一切正常。 :)

关于c# - 从两个不同的位置安装 ClickOnce 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5316882/

相关文章:

c# - 是否有 System.Text.StringBuilder 的二进制等价物?

azure - 我已经使用 ftp 在 wwwroot 文件夹中部署了 build 文件夹。但我的网址仍在运行它的默认页面

java - Java 应用程序的零停机部署

c# - 在该类的静态方法中创建该类的实例是否干净?

c# - 如何在 C# 中创建二维动态数组?

c# - 无法从 Func<T,T,T> 转换为 Func<T,T,T>

.net-3.5 - 如何在RDLC报告中显示图像

internet-explorer - 当通过Internet Explorer使用内容请求时,为什么Windows Media Player有时有时无法在请求中包含适当的cookie?

C# 将字符串显式转换为枚举

java - 是否可以在 JBoss AS 7 中部署分解的 war 文件(解压缩的 war )