C# PS Cmdlet - 无法加载文件或程序集或其依赖项之一系统找不到文件

问题描述

我正在用 C# 编写一个 PowerShell cmdlet,一切正常,直到我从 nuget 引用库,然后抛出有关无法加载文件或程序集的信息。

就好像代码没有内置到 DLL 中一样 - 我如何确保所有引用的 nuget 库都嵌入到我的 DLL 中,或者至少在外部注册,以允许使用 cmdlet?

在这种情况下,它特别抱怨 Nito.AsyncEx(或者如果我删除它,它将转到下一个库,例如 Flurl)基本上是我通过 nuget 为项目引用的任何库:

Import-Module .\polygonIo.PowerShell.dll
Get-Aggregates -StocksTicker TSLA

Get-Aggregates : Could not load file or assembly 'Nito.AsyncEx.Tasks,Version=5.1.0.0,Culture=neutral,PublicKeyToken=null' or one of its dependencies. The system cannot find the file
specified.
At line:1 char:1
+ Get-Aggregates -StocksTicker TSLA ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Get-Aggregates],FileNotFoundException
    + FullyQualifiedErrorId : System.IO.FileNotFoundException,polygonIo.PowerShell.GetAggregates

我的项目文件是:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <packagereference Include="Nito.AsyncEx" Version="5.1.0" />
    <packagereference Include="PowerShellStandard.Library" Version="5.1.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\polygonIo.WebApi\polygonIo.WebApi.csproj" />
  </ItemGroup>

</Project>

cmdlet 中的代码是:

public class GetAggregates : Cmdlet
{
    /* snip parameters and ProcessRecordAsync() */

    protected override void ProcessRecord()
    {
        base.ProcessRecord();

        var task = ProcessRecordAsync();
        var result = task.WaitAndUnwrapException();
    }
}

生成文件是(我注意到,在这里我通常会像在我的其他构建的应用程序中一样在这里拥有所有引用的 lib DLL,但它们丢失了):

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        21/12/2020     23:49          26112 polygonIo.Api.dll
-a----        21/12/2020     23:49          12300 polygonIo.Api.pdb
-a----        21/12/2020     23:49           9838 polygonIo.PowerShell.deps.json
-a----        21/12/2020     23:49           9216 polygonIo.PowerShell.dll
-a----        21/12/2020     23:49           9156 polygonIo.PowerShell.pdb

polygonIo.PowerShell.deps.json 是:

{
  "runtiMetarget": {
    "name": ".NETStandard,Version=v2.0/","signature": ""
  },"compilationoptions": {},"targets": {
    ".NETStandard,Version=v2.0": {},".NETStandard,Version=v2.0/": {
      "polygonIo.PowerShell/1.0.0": {
        "dependencies": {
          "NETStandard.Library": "2.0.3","Nito.AsyncEx": "5.1.0","polygonIo.Api": "1.0.0","PowerShellStandard.Library": "5.1.0"
        },"runtime": {
          "polygonIo.PowerShell.dll": {}
        }
      },"Flurl/3.0.1": {
        "runtime": {
          "lib/netstandard2.0/Flurl.dll": {
            "assemblyVersion": "3.0.1.0","fiLeversion": "3.0.1.0"
          }
        }
      },"Microsoft.NETCore.Platforms/1.1.0": {},"NETStandard.Library/2.0.3": {
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0"
        }
      },"Newtonsoft.Json/12.0.3": {
        "runtime": {
          "lib/netstandard2.0/Newtonsoft.Json.dll": {
            "assemblyVersion": "12.0.0.0","fiLeversion": "12.0.3.23909"
          }
        }
      },"Nito.AsyncEx/5.1.0": {
        "dependencies": {
          "Nito.AsyncEx.Context": "5.1.0","Nito.AsyncEx.Coordination": "5.1.0","Nito.AsyncEx.Interop.WaitHandles": "5.1.0","Nito.AsyncEx.Oop": "5.1.0","Nito.AsyncEx.Tasks": "5.1.0","Nito.Cancellation": "1.1.0"
        }
      },"Nito.AsyncEx.Context/5.1.0": {
        "dependencies": {
          "Nito.AsyncEx.Tasks": "5.1.0"
        },"runtime": {
          "lib/netstandard2.0/Nito.AsyncEx.Context.dll": {
            "assemblyVersion": "5.1.0.0","fiLeversion": "5.1.0.0"
          }
        }
      },"Nito.AsyncEx.Coordination/5.1.0": {
        "dependencies": {
          "Nito.AsyncEx.Tasks": "5.1.0","Nito.Collections.Deque": "1.1.0"
        },"runtime": {
          "lib/netstandard2.0/Nito.AsyncEx.Coordination.dll": {
            "assemblyVersion": "5.1.0.0","Nito.AsyncEx.Interop.WaitHandles/5.1.0": {
        "dependencies": {
          "Nito.AsyncEx.Tasks": "5.1.0"
        },"runtime": {
          "lib/netstandard2.0/Nito.AsyncEx.Interop.WaitHandles.dll": {
            "assemblyVersion": "5.1.0.0","Nito.AsyncEx.Oop/5.1.0": {
        "dependencies": {
          "Nito.AsyncEx.Coordination": "5.1.0"
        },"runtime": {
          "lib/netstandard2.0/Nito.AsyncEx.Oop.dll": {
            "assemblyVersion": "5.1.0.0","Nito.AsyncEx.Tasks/5.1.0": {
        "dependencies": {
          "Nito.disposables": "2.2.0"
        },"runtime": {
          "lib/netstandard2.0/Nito.AsyncEx.Tasks.dll": {
            "assemblyVersion": "5.1.0.0","Nito.Cancellation/1.1.0": {
        "dependencies": {
          "Nito.disposables": "2.2.0"
        },"runtime": {
          "lib/netstandard2.0/Nito.Cancellation.dll": {
            "assemblyVersion": "1.1.0.0","fiLeversion": "1.1.0.0"
          }
        }
      },"Nito.Collections.Deque/1.1.0": {
        "runtime": {
          "lib/netstandard2.0/Nito.Collections.Deque.dll": {
            "assemblyVersion": "1.1.0.0","Nito.disposables/2.2.0": {
        "dependencies": {
          "System.Collections.Immutable": "1.4.0"
        },"runtime": {
          "lib/netstandard2.0/Nito.disposables.dll": {
            "assemblyVersion": "2.2.0.0","fiLeversion": "2.2.0.0"
          }
        }
      },"PowerShellStandard.Library/5.1.0": {
        "runtime": {
          "lib/netstandard2.0/System.Management.Automation.dll": {
            "assemblyVersion": "3.0.0.0","System.Collections.Immutable/1.4.0": {
        "runtime": {
          "lib/netstandard2.0/System.Collections.Immutable.dll": {
            "assemblyVersion": "1.2.2.0","fiLeversion": "4.6.25519.3"
          }
        }
      },"polygonIo.Api/1.0.0": {
        "dependencies": {
          "Flurl": "3.0.1","Newtonsoft.Json": "12.0.3"
        },"runtime": {
          "polygonIo.Api.dll": {}
        }
      }
    }
  },"libraries": {
    "polygonIo.PowerShell/1.0.0": {
      "type": "project","serviceable": false,"sha512": ""
    },"Flurl/3.0.1": {
      "type": "package","serviceable": true,"sha512": "sha512-i7CuPSikVroBaWG8sPvO707Ex9C6BP5+r4JufKNU1FGMmiFgLJvNo1ttUg6ZiXIzUNknvIb1VUTIO9iEDucibg==","path": "flurl/3.0.1","hashPath": "flurl.3.0.1.nupkg.sha512"
    },"Microsoft.NETCore.Platforms/1.1.0": {
      "type": "package","sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==","path": "microsoft.netcore.platforms/1.1.0","hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512"
    },"NETStandard.Library/2.0.3": {
      "type": "package","sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==","path": "netstandard.library/2.0.3","hashPath": "netstandard.library.2.0.3.nupkg.sha512"
    },"Newtonsoft.Json/12.0.3": {
      "type": "package","sha512": "sha512-6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg==","path": "newtonsoft.json/12.0.3","hashPath": "newtonsoft.json.12.0.3.nupkg.sha512"
    },"Nito.AsyncEx/5.1.0": {
      "type": "package","sha512": "sha512-KOahZdW0fRLnoym5lGtyWpFUZ94I5s0wLgYF5RHhK8RUhxpciEX+185qjNvkse3H9WJV2/pFfPlKZHv8Eej7Hw==","path": "nito.asyncex/5.1.0","hashPath": "nito.asyncex.5.1.0.nupkg.sha512"
    },"Nito.AsyncEx.Context/5.1.0": {
      "type": "package","sha512": "sha512-EE7M37c5E/kvulzEkpUR6v1AnK34b2wysOLJHSjl78p/3hL7grte0XCPRqCfLZDwq98AD9GHMTCRfZy7TEeHhw==","path": "nito.asyncex.context/5.1.0","hashPath": "nito.asyncex.context.5.1.0.nupkg.sha512"
    },"Nito.AsyncEx.Coordination/5.1.0": {
      "type": "package","sha512": "sha512-Nv+oA+cSxidjOImiKcz2FJgMIDxiK0A6xormKmsUklUBjTNqQpjtdJsACMgTQG56PkTHdbMi5QijPTTUsmcCeg==","path": "nito.asyncex.coordination/5.1.0","hashPath": "nito.asyncex.coordination.5.1.0.nupkg.sha512"
    },"Nito.AsyncEx.Interop.WaitHandles/5.1.0": {
      "type": "package","sha512": "sha512-wFm3lrXXNPBtZHjLI21xhcADoh5CzO5KKNO38ybLO/ccl9zMUWWfsNiAFbw8JGp/wHoxhfdEUlThBnY3XaLR/w==","path": "nito.asyncex.interop.waithandles/5.1.0","hashPath": "nito.asyncex.interop.waithandles.5.1.0.nupkg.sha512"
    },"Nito.AsyncEx.Oop/5.1.0": {
      "type": "package","sha512": "sha512-J5DVgQrmE9qMNhK2eEMsuEw7V7cw7MIPrv3jqqQWolzDXkOxJFFYKUK+4dnC6UAEmum3xRVD2oBAoXg0vdYDDQ==","path": "nito.asyncex.oop/5.1.0","hashPath": "nito.asyncex.oop.5.1.0.nupkg.sha512"
    },"Nito.AsyncEx.Tasks/5.1.0": {
      "type": "package","sha512": "sha512-tU3Ib4zs8ivM+uS8n7F7ReWZlA3mODyLqwPE+v+WJI94hZ8xLXl+a9npfj/IcmeXo9a6fGKLWkswKQHOeTWqwA==","path": "nito.asyncex.tasks/5.1.0","hashPath": "nito.asyncex.tasks.5.1.0.nupkg.sha512"
    },"Nito.Cancellation/1.1.0": {
      "type": "package","sha512": "sha512-BSezc6jsEEAoa8UtVjQ6Qr/D5xX+FozlDKFHAvDeTv24I7ZZmmfbFxEmdjaSLnrboz1WMRjUKCQwZw7Gf4+WcA==","path": "nito.cancellation/1.1.0","hashPath": "nito.cancellation.1.1.0.nupkg.sha512"
    },"Nito.Collections.Deque/1.1.0": {
      "type": "package","sha512": "sha512-RXHe531Oaw2IathDr0Q2kbid0iuudBxtgZsfBZ2eUPuFI8I1P7HMiuUeaIefqYykcDYFTDQsFAPAljduIjihLA==","path": "nito.collections.deque/1.1.0","hashPath": "nito.collections.deque.1.1.0.nupkg.sha512"
    },"Nito.disposables/2.2.0": {
      "type": "package","sha512": "sha512-QcL+uBwUCEoK8GKp/WzjdCiG8/3G1WLlVNJgLJUNG7bIIVAcEV+Mro4s53VT4Nd8xmsplv0gy+Priw44vRvLaA==","path": "nito.disposables/2.2.0","hashPath": "nito.disposables.2.2.0.nupkg.sha512"
    },"PowerShellStandard.Library/5.1.0": {
      "type": "package","sha512": "sha512-iYaRvQsM1fow9h3uEmio+2m2VXfulgi16AYHaTZ8Sf7erGe27Qc8w/h6QL5UPuwv1aXR40QfzMEwcCeiYJp2cw==","path": "powershellstandard.library/5.1.0","hashPath": "powershellstandard.library.5.1.0.nupkg.sha512"
    },"System.Collections.Immutable/1.4.0": {
      "type": "package","sha512": "sha512-71hw5RUJRu5+q/geUY69gpXD8Upd12cH+F3MwpXV2zle7Bqqkrmc1JblOTuvUcgmdnUtQvBlV5e1d6RH+H2lvA==","path": "system.collections.immutable/1.4.0","hashPath": "system.collections.immutable.1.4.0.nupkg.sha512"
    },"polygonIo.Api/1.0.0": {
      "type": "project","sha512": ""
    }
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...