3

我有一些 C# 代码从某个路径加载程序集,如下所示:

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

当我编译时,Visual Studio Code Analysis 会抛出这个警告

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

我正在寻找一种解决此警告的方法(不抑制它)。有没有替代方案可以LoadFrom为我做到这一点(我知道LoadFile 不是)?

4

3 回答 3

3

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

assembly = Assembly.Load(new AssemblyName { CodeBase = fileToLoadFullName })
于 2012-10-26T13:26:29.980 回答
3

如果您的代码可以正常工作并且符合您的预期,则否决警告。警告是为了让你注意可能有极端情况的事情。如果您已阅读有关CA 1009 的内容,并且了解其中的注意事项,那么:继续。

对于从特定路径加载,LoadFrom可能是正确的调用。完全消除它的唯一方法是:

  • 删除从特定路径加载的要求
  • 使用AppDomain具有不同探测路径的自定义,并用于MarshalByRefObject在它们之间聊天
于 2012-06-26T07:36:22.743 回答
1

根据您要实现的目标,您可能可以使用Assembly.Load. 这样,您的程序集可以位于 GAC 或本地 bin 目录中。

var sampleAssembly = Assembly.Load("SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3");
于 2012-06-26T07:36:15.547 回答