C# ClickOnce困境:代码身份与安全性-怎么办?
我们在应用程序生命周期管理方面有很大的改进空间。我们不使用或任何其他套件(我知道,我们感到羞耻) 无论如何,我们目前考虑的一个方面是代码标识。 换句话说:审核员问我们如何确保被各部门测试和接受的软件是我们为生产性使用而部署的程序集,并且没有任何改动,而不是修改版本。“那很容易”,我们说,“不容易!”。因为一些配置变量是在批准和发布之间设置的,所以ClickOnce散列会有所不同,从而完成整个过程 到目前为止,情况就是这样,但我们希望(并且必须)在我们所做的事情上做得更好,因此无法避免创建无状态且不受环境影响的程序集。但是我们必须在运行时设置环境,我们的选项如下:C# ClickOnce困境:代码身份与安全性-怎么办?,c#,wpf,winforms,deployment,clickonce,C#,Wpf,Winforms,Deployment,Clickonce,我们在应用程序生命周期管理方面有很大的改进空间。我们不使用或任何其他套件(我知道,我们感到羞耻) 无论如何,我们目前考虑的一个方面是代码标识。 换句话说:审核员问我们如何确保被各部门测试和接受的软件是我们为生产性使用而部署的程序集,并且没有任何改动,而不是修改版本。“那很容易”,我们说,“不容易!”。因为一些配置变量是在批准和发布之间设置的,所以ClickOnce散列会有所不同,从而完成整个过程 到目前为止,情况就是这样,但我们希望(并且必须)在我们所做的事情上做得更好,因此无法避免创建无状态且
我认为所有这些都相当不令人满意,必须有更好的方法来做到这一点。这怎么能用很少的方法做到呢(意味着没有TFS或类似的怪物)?我只是把ApplicationDeployment类弄得有点乱。我想我现在拥有的和我想要的非常接近
private static void GetDeploymentEnvironment()
{
if (ApplicationDeployment.IsNetworkDeployed)
{
ApplicationDeployment dep = ApplicationDeployment.CurrentDeployment;
FileInfo f = new FileInfo(dep.UpdateLocation.AbsolutePath + ".env");
if (f.Exists)
{
/// read file content and apply settings
}
}
}
这使我能够将一个文件放在部署文件夹(即.application文件所在的位置)中,以用于覆盖设置。如果没有这样的文件,那么……什么都不会被覆盖。无论我对这个文件的内容做什么,程序集标识都会被保留
编辑:只是一个提示,正如您所看到的,这仅对部署为仅联机的应用程序有用。在离线可用的场景中,您不能从不同的位置启动相同的ClickOnce.application文件。我只是稍微弄乱了ApplicationDeployment类。我想我现在拥有的和我想要的非常接近
private static void GetDeploymentEnvironment()
{
if (ApplicationDeployment.IsNetworkDeployed)
{
ApplicationDeployment dep = ApplicationDeployment.CurrentDeployment;
FileInfo f = new FileInfo(dep.UpdateLocation.AbsolutePath + ".env");
if (f.Exists)
{
/// read file content and apply settings
}
}
}
这使我能够将一个文件放在部署文件夹(即.application文件所在的位置)中,以用于覆盖设置。如果没有这样的文件,那么……什么都不会被覆盖。无论我对这个文件的内容做什么,程序集标识都会被保留
编辑:只是一个提示,正如您所看到的,这仅对部署为仅联机的应用程序有用。您不能从脱机可用的场景中的不同位置启动相同的ClickOnce.application文件。可能此信息也很重要:ClickOnce部署设置为仅联机。干杯也许这些信息也很重要:ClickOnce部署设置为仅联机。干杯