这就是我正在做的。
$ReferencedAssemblies =
@(
'System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
'Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
'System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
)
$TypeDefinition = Get-Content -Path '$PSScriptRoot\Program.cs' -Raw
Add-Type -TypeDefinition $TypeDefinition -ReferencedAssemblies $ReferencedAssemblies但问题是我不能调试以这种方式编译的代码。
发布于 2018-01-25 23:43:53
Add-Type命令具有解析由-ReferencedAssemblies参数指定的程序集的内部方法。我们可以通过反射来使用它。
$addTypeCommand = Get-Command -Name 'Add-Type'
$addTypeCommandInstance = [Activator]::CreateInstance($addTypeCommand.ImplementingType)
$resolveAssemblyMethod = $addTypeCommand.ImplementingType.GetMethod('ResolveReferencedAssembly', [Reflection.BindingFlags]'NonPublic, Instance')
$compilerParameters = New-Object -TypeName System.CodeDom.Compiler.CompilerParameters
$compilerParameters.CompilerOptions = '/debug-'
foreach ($reference in $ReferencedAssemblies)
{
$resolvedAssembly = $resolveAssemblyMethod.Invoke($addTypeCommandInstance, $reference)
$compilerParameters.ReferencedAssemblies.Add($resolvedAssembly)
}
$compilerParameters.IncludeDebugInformation = $true
Add-Type -TypeDefinition $TypeDefinition -CompilerParameters $compilerParametershttps://stackoverflow.com/questions/48446394
复制相似问题