尽管引用了System.Windows.Forms FileNotFoundException,但它仍然存在

时间:2016-09-20 07:49:28

标签: c# .net dll .net-assembly filenotfoundexception

我收到System.IO.FileNotFoundException,其中指出找不到System.Windows.Forms.dll,虽然我引用了程序集(当然也删除并重新引用了它)。
我必须加载外部*.resx文件并将它们写入sqlite-db 这是抛出异常的代码部分:

private void LoadResources()
{
    string[] resources = Directory.GetFiles(Settings.Default.DefaultFilePath, "*.resx", SearchOption.AllDirectories);
    foreach (var resource in resources)
    {
        var resReader = new ResXResourceReader(resource);
        var dict = resReader.GetEnumerator(); // Exception raised at 29th iteration
        while (dict.MoveNext())
        {
            if (dict.Key.GetType() != typeof (string))
                continue;

            // unrelevant stuff...

但是,异常总是在foreach - 循环的同一次迭代(第29次)中引发(因此,不是直接),而不依赖于底层文件。

修改

StackTrace

System.IO.FileNotFoundException occurred
  FileName=System.Windows.Forms
  FusionLog==== Zustandsinformationen vor Bindung ===
LOG: DisplayName = System.Windows.Forms
 (Partial)
WRN: Für eine Assembly wurden partielle Bindungsinformationen bereitgestellt:
WRN: Assemblyname: System.Windows.Forms | Domänen-ID: 1
WRN: Eine partielle Bindung tritt auf, wenn nur ein Teil des Assemblyanzeigenamens bereitgestellt wird.
WRN: Dies führt möglicherweise dazu, dass die Sammelmappe eine falsche Assembly lädt.
WRN: Geben Sie die Textidentität der Assembly mit allen Einzelheiten an. 
WRN: Dazu gehören der einfache Name, die Version und Kultur und das öffentliche Schlüsseltoken.
WRN: Weitere Informationen und allgemeine Lösungen für dieses Problem finden Sie im Whitepaper unter "http://go.microsoft.com/fwlink/?LinkId=109270".
LOG: Appbase = file:///C:/Users/patrick/Documents/Visual Studio 2015/Projects/GitTranslationTool/CleanTranslationTool/CleanTranslationTool/bin/Debug/
LOG: Ursprünglicher PrivatePath = NULL
Aufruf von Assembly : System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
  HResult=-2147024894
  Message=Die Datei oder Assembly "System.Windows.Forms" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
  Source=mscorlib
  StackTrace:
       bei System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
       bei System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
  InnerException: 

关于一个例子:

private void LoadResources()
{
    string[] resources = Directory.GetFiles(@"your\folder\with\resources", "*.resx", SearchOption.AllDirectories);
    var counter = 0;
    foreach (var resource in resources)
    {
        counter++;
        var resReader = new ResXResourceReader(resource);
        var dict = resReader.GetEnumerator();
        while (dict.MoveNext())
        {
            if (dict.Key.GetType() != typeof (string))
                continue;
            Debug.WriteLine("{0}: {1}", dict.Key, dict.Value);
        }
    }
}

0 个答案:

没有答案