2012-06-26 17 views
3

我已经从某个路径,像这样加载程序集的一些C#代码:如何解决在Visual Studio CA 1009警告

assembly = System.Reflection.Assembly.LoadFrom(assemblyPath);

当我编译时,Visual Studio代码分析抛出这个warning

warning : CA2001 : Microsoft.Reliability : Remove the call to Assembly.LoadFrom ...

我正在寻找解决此警告(而不是压制它)的方法。是否有替代LoadFrom这样做对我来说(我知道LoadFileisn't it)?

回答

3

如果你的代码工作做你所期望的,然后否决警告。警告在那里将您的注意力引向可能存在边缘情况的事物。如果您已经阅读了关于CA 1009的,并且您了解注意事项,则请继续:继续。

对于从特定路径加载,LoadFrom可能是正确的调用。唯一的办法完全去除这将是:

  • 删除从一个特定的路径
  • 使用自定义AppDomain不同的探测路径负载的要求,并使用MarshalByRefObject他们
之间聊天
1

取决于你试图达到的目标可能能够使用Assembly.Load。这样你的程序集可以在GAC或本地bin目录中。

var sampleAssembly = Assembly.Load("SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3"); 
3

这在实践中做同样的,但避免了CA警告:

assembly = Assembly.Load(new AssemblyName { CodeBase = fileToLoadFullName }) 
+2

[MSDN](http://msdn.microsoft.com/en-us/library/x4cw969y.aspx)说:“不要使用''AssemblyName'只有'CodeBase'属性集。“如果你想避免这个警告,你应该明确地用'[SuppressMessage]'来禁止它,而不是围绕FxCop工作。 –