我试图用PowerShell v2称这个非常简单的.NET 4函数。它的定义如下:
公共共享功能 currentSchoolYear()As String NM4.SiteAdmin.Logic.Subscription
的成员
让我们添加包含该函数的DLL文件的路径。这是一个ASP.NET MVC Web应用程序DLL文件。
PS> Add-Type -Path C:\ xxx \ bin \ xxxWebApp.dll
我们试试吧(失败!):
PS>
[NM4.SiteAdmin.Logic.Subscription] :: currentSchoolYear()
称为“currentSchoolYear”的例外情况 “0”参数:“类型
初始化器为 'NM4.SiteAdmin.Logic.Subscription'
抛出一个例外。“在线:1个字符:54个 + [NM4.SiteAdmin.Logic.Subscription] :: currentSchoolYear
<<<< ()
+ CategoryInfo:未指定:(:) [],
MethodInvocationException
+ FullyQualifiedErrorId:DotNetMethodException
让我们从PowerShell中观察这个类:
PS>
[NM4.SiteAdmin.Logic.Subscription]
IsPublic IsSerial名称
BaseType
-------- -------- ---- --------真假订阅
System.Object
让我们观察PowerShell的功能
PS>
[NM4.SiteAdmin.Logic.Subscription] :: currentSchoolYear
MemberType:方法
OverloadDefinitions:{静态字符串
currentSchoolYear()} TypeNameOfValue
:
System.Management.Automation.PSMethod
值:静态字符串
currentSchoolYear()名称
:currentSchoolYear IsInstance
:正确
为什么哦为什么?对我来说,这似乎是文档。
答案 0 :(得分:3)
我使用此命令获取有关错误的更多详细信息:
$ error | Format-List -force
然后抛出了这个更精确的例子:
System.NullReferenceException:对象
引用未设置为实例 宾语。
at
NM4.SiteAdmin.GlobalFunctions.EstMachineProduction()
在 C:\ xxx \ Old_App_Code \ DataModel \ GlobalFunctions.vb:line
17
我发现这是对web.config的调用失败:
返回
ConfigurationManager.ConnectionStrings.Item( “test_DBNM4”)。ConnectionString的
PowerShell加载的DLL文件可能不在他们通常的Web上下文中。我硬编码了一个ConnectionString来测试它(临时,不是一个好的安全实践),它正在工作。
答案 1 :(得分:0)
这听起来像静态构造函数 OR 中的异常,无法加载NM4.SiteAdmin.Logic.Subscription所依赖的类型。我假设“C:\ xxx \ bin \ xxxWebApp.dll”并且朋友不在GAC中并且您没有从“C:\ xxx \ bin \”运行,因此powershell无法解析依赖关系。尝试从“C:\ xxx \ bin \”运行它。