我在c#中编写了一个PowerShell Cmdlet并遇到了问题。当我运行它时,我得到一个错误,说它无法找到代码所需的程序集之一。我使用fuslogvw来获取它正在尝试加载的程序集的转储,并且它正在查找错误的位置。程序集都在bin文件夹中,但它首先在PowerShell文件夹中查找,然后在psd1文件所在的文件夹中查找。有什么我可以在配置或其他地方添加,可以帮助这看起来在正确的文件夹中。所需的程序集不在GAC中,并且将它们放在那里并不是真正的选择。
-------编辑-----
当我说我运行Cmdlet时,我的意思是在项目的Debug选项中设置命令行参数。
"启动外部程序"设置为:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
参数设置为:
-noexit -ExecutionPolicy Unrestricted -command "& { import-module .\psModules\MyTestCmdlet }"
psd1文件位于名为psModules的projects子文件夹中,Cmdlet所需的程序集位于bin文件夹中。当我在visual studio中调试Cmdlet时,Powershell会在powershell文件夹和项目文件夹的根目录中查找。
我感觉这是一个与项目结构方式有关的问题。