我有一个使用C#在.NET framework 3.5,Service Pack 1中开发的Windows窗体应用程序.可以基于开发数据库和生产数据库发布应用程序.我正在使用MSBuild社区任务来发布我的应用程序.将应用程序发布到不同位置(即开发位置和生产位置)时,我不会遇到任何问题.
问题:
>将开发应用程序安装到我的机器后,我无法安装生产应用程序.它给我一个错误说:
You cannot start application TEST from this location
because it is already installed from a different location
>问题:机器如何理解我正在尝试安装相同的应用程序?我假设它有某种应用程序ID.如果是这种情况,我可以根据位置覆盖相关值. (DEV或PROD)
在我的应用程序的项目文件中发布时的当前代码:
<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>
应用程序的发布就像一个魅力,并指向相关的数据库.我现在要做的就是能够在同一台机器上安装开发应用程序和生产应用程序,而不会出现任何错误.
>问题:一次申请与另一次申请的区别是什么?
解决方法:
所以我终于想出了如何部署同一个应用程序的不同版本.应用程序清单文件缺少deploymentProvider attribute of the deployment element.
在应用程序清单中添加部署元素的部署提供程序属性后,我能够从各个位置安装我的应用程序.但问题在于它覆盖了以前安装的应用程序.对于这个问题,我按照this tutorial来区分我的开发应用程序和生产应用程序.
现在一切都很好.