C#Powershell snapin没有使用installutil进行注册

dow*_*one 13 c# powershell installutil pssnapin

我有一个非常简单的PowerShell脚本(见下文).我在我的个人资料中使用以下内容获得了installutil别名:

set-alias installutil $env:windir\Microsoft.NET\Framework\v2.0.50727\installutil
Run Code Online (Sandbox Code Playgroud)

在powershell中我简单地说:

installutil assemplylocation.dll
Run Code Online (Sandbox Code Playgroud)

这成功返回.(安装/提交都成功完成).然而,当我检查注册表时,或者在使用get-pssnapin -registered的powershell中,它没有显示我的程序集.我前几天做了这个,它工作正常,但我似乎无法复制它...请指教.

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

namespace PSBook_2_1
{
    [RunInstaller(true)]
    public class PSBookChapter2MySnapIn : PSSnapIn
    {
        public PSBookChapter2MySnapIn()
            : base()
        { }

    // Name for the PowerShell snap-in.
    public override string Name
    {
        get
        {
            return "Wiley.PSProfessional.Chapter2";
        }
    }

    // Vendor information for the PowerShell snap-in.
    public override string Vendor
    {
        get
        {
            return "Wiley";
        }
    }

    // Description of the PowerShell snap-in
    public override string Description
    {
        get
        {
            return "This is a sample PowerShell snap-in";
        }
    }
}

// Code to implement cmdlet Write-Hi
[Cmdlet(VerbsCommunications.Write, "Hi")]
public class SayHi : Cmdlet
{
    protected override void ProcessRecord()
    {
        WriteObject("Hi, World!");
    }
}

// Code to implement cmdlet Write-Hello
[Cmdlet(VerbsCommunications.Write, "Hello")]
public class SayHello : Cmdlet
{
    protected override void ProcessRecord()
    {
        WriteObject("Hello, World!");
    }
}
Run Code Online (Sandbox Code Playgroud)

}

Ala*_*ald 14

downatone的回答让我走上正轨,但我的问题恰恰相反.我的项目设置为任何CPU,我在Win7 x64上,所以PowerShell从我的代码启动,然后用snapin安装dll是64位.但是我使用的安装命令指向32位.net运行时ie

C:\Windows\Microsoft.net\Framework\V4.0.30319\installutil myDLL.dll
Run Code Online (Sandbox Code Playgroud)

什么时候应该

C:\Windows\Microsoft.net\Framework64\V4.0.30319\installutil myDLL.dll
Run Code Online (Sandbox Code Playgroud)

请注意Framework路径中的64.


dow*_*one 11

原来问题是我有一个32位cmdlet - 但只是检查了64位版本的powershell ...


Jar*_*Par 1

您是否以提升用户身份运行 installutil?它将信息写入注册表的受保护部分。如果您在 Vista 上以非管理员身份执行此操作,可能会产生奇怪的结果。