我有一个在 .NET Framework 3.5 Service pack 1 中使用 C# 开发的 Windows 窗体应用程序。该应用程序可以基于开发数据库和生产数据库发布。我正在使用 MSBuild 社区任务来发布我的应用程序。将应用程序发布到不同位置(即开发位置和生产位置)时,我没有遇到任何问题。
问题:
将开发应用程序安装到我的机器后,我无法安装生产应用程序。它给我一个错误说:
You cannot start application TEST from this location because it is already installed from a different location
问题:机器如何理解我正在尝试安装相同的应用程序?我假设它有某种应用程序 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>
应用程序的发布就像一个魅力并指向相关的数据库。我现在想要做的就是能够在同一台机器上毫无错误地安装开发应用程序和生产应用程序。
问题:单击一次应用程序与其他应用程序的区别是什么?
最佳答案
所以我终于想通了如何部署同一个应用程序的不同版本。缺少应用程序 list 文件 deploymentProvider attribute of the deployment element.
在应用程序 list 中添加部署元素的部署提供程序属性后,我能够从不同位置安装我的应用程序。但这里的问题是它覆盖了以前安装的应用程序。对于这个问题,我关注了this tutorial将我的开发应用程序与生产应用程序区分开来。
现在一切正常。 :)
关于c# - 从两个不同的位置安装 ClickOnce 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5316882/