C# 无法注册C Powershell管理单元

C# 无法注册C Powershell管理单元,c#,powershell,cmdlets,installutil,C#,Powershell,Cmdlets,Installutil,我已经看到了许多类似的问题,但仍然不知道如何解决它:我有一个简单的powershell cmdlet,它只添加了参数和一个管理单元来注册它。问题是,然后我尝试运行installutil No public installers with the RunInstallerAttribute.Yes attribute could be found 管理单元代码: using System.ComponentModel; using System.Management.Automation; n

我已经看到了许多类似的问题,但仍然不知道如何解决它:我有一个简单的powershell cmdlet,它只添加了参数和一个管理单元来注册它。问题是,然后我尝试运行installutil

No public installers with the RunInstallerAttribute.Yes attribute could be found
管理单元代码:

using System.ComponentModel;
using System.Management.Automation;

namespace Cmdtlets
{
    [RunInstaller(true)]
    class BugBoxSnapin : PSSnapIn
    {

    }
}
我知道存在64位和32位版本的installutil以及x86和x64 PowerShell。 我的配置是-64位机器,平台目标是任何CPU,.NETFramework 4.5。我无法从visual studio引用选择器中引用System.Management.Automation,因此我使用手动更改了csproj文件

<Reference Include="System.Management.Automation" />
我应该在哪个版本的powershell中运行哪个版本的installutil?我想我尝试了每种组合,但仍然遇到同样的问题


还有一个问题:完成此操作后,我需要与32位COM对象交互,我应该如何设置项目?

如果您的目标是PowerShell V1/V2,那么您应该以.NET 2.0为目标。如果您的目标是V3/V4,那么您应该以.NET4.0为目标。如果您不必支持V1,那么就根本不要使用管理单元。二进制文件可以保持不变,只是不需要PSSnapin类,也不需要运行installutil。您只需通过绝对路径加载它:

Import-Module -Path c:\temp\mybinary.dll
或者,如果您将dll放在Modules dir~\Documents\WindowsPowerShell\Modules\MyBinary\MyBinary.dll中,只需按名称:

Import-Module MyBinary

如果您的目标是PowerShell V1/V2,则应以.NET 2.0为目标。如果您的目标是V3/V4,那么您应该以.NET4.0为目标。如果您不必支持V1,那么就根本不要使用管理单元。二进制文件可以保持不变,只是不需要PSSnapin类,也不需要运行installutil。您只需通过绝对路径加载它:

Import-Module -Path c:\temp\mybinary.dll
或者,如果您将dll放在Modules dir~\Documents\WindowsPowerShell\Modules\MyBinary\MyBinary.dll中,只需按名称:

Import-Module MyBinary