.NET中有卷影复制功能,可以通过复制程序集来保留文件锁定。
有两个属性:AppDomain.ShadowCopyFiles
使用appdomainsetupAppDomainSetup.ShadowCopyFiles
存储在内部string[]
AppDomainSetup
具有用于存储配置的string Value[]
字段。奇怪的是AppDomainSetup.ShadowCopyFiles
是一个字符串属性,我们需要设置"true"
或"false"
而不是真正的bool
类型。
以下是AppDomainSetup
中该属性的实现:
public string ShadowCopyFiles
{
get
{
return this.Value[8];
}
set
{
if (value != null && string.Compare(value, "true", StringComparison.OrdinalIgnoreCase) == 0)
this.Value[8] = value;
else
this.Value[8] = (string) null;
}
}
下面是appdomain.shadowcopyfiles的实现:
public bool ShadowCopyFiles
{
get {
String s = FusionStore.ShadowCopyFiles;
if((s != null) &&
(String.Compare(s, "true", StringComparison.OrdinalIgnoreCase) == 0))
return true;
else
return false;
}
}
但是为什么在
AppDomainSetup
中这个属性是一个string
?为什么微软没有像bool
中那样使用一些AppDomain.ShadowCopyFiles
转换逻辑?奇怪的是,在
AppDomainSetup
中发现了这么一个有点臭的代码,而我只是在想,我丢失这些代码的真正原因是什么? 最佳答案
这是.NET早期版本中的一个错误,微软决定不修复它,因为它会破坏现有代码。
请参阅此链接。
http://connect.microsoft.com/VisualStudio/feedback/details/295269/appdomainsetup-shadowcopyfiles-should-be-of-the-type-bool-instead-of-string