.NET ShellExtension(Framework 4.5,Windows 8.1,SharpShell)无效

Mar*_*tin 3 .net c# shell-extensions visual-studio windows-8.1

我试图在Windows 8.1中实现自定义ShellExtension.发现真的很好的SharpShell教程.

[ComVisible(true)]
[COMServerAssociation(AssociationType.AllFiles)]
public class CountExtProvider : SharpContextMenu
{
    protected override bool CanShowMenu()
    {
        //  We will always show the menu.
        return true;
    }

    protected override ContextMenuStrip CreateMenu()
    {
        //  Create the menu strip.
        var menu = new ContextMenuStrip();

        //  Create a 'count lines' item.
        var itemCountLines = new ToolStripMenuItem
        {
            Text = "Count Lines"
        };

        //  When we click, we'll call the 'CountLines' function.
        itemCountLines.Click += (sender, args) => CountLines();

        //  Add the item to the context menu.
        menu.Items.Add(itemCountLines);

        //  Return the menu.
        return menu;
    }

    private void CountLines()
    {
        //  Builder for the output.
        var builder = new StringBuilder();

        //  Go through each file.
        foreach (var filePath in SelectedItemPaths)
        {
            //  Count the lines.
            builder.AppendLine(string.Format("{0} - {1} Lines",
              Path.GetFileName(filePath), File.ReadAllLines(filePath).Length));
        }

        //  Show the ouput.
        MessageBox.Show(builder.ToString());
    } 
}
Run Code Online (Sandbox Code Playgroud)

我在Windows 8.1 RTM x64环境中,所以我在Visual Studio 2013 RC中将构建平台更改为x64 .添加了一个密钥文件来签署我的*.dll.但如果我想注册我的*.dll什么都没发生:

regasm ShellExtensions.dll
Run Code Online (Sandbox Code Playgroud)

命令行说注册成功但在上下文菜单中没有条目.我在这做错了什么?这不再适用于Windows 8.1吗?

jAC*_*jAC 7

我在使用时遇到了同样的问题regasm.exe.
此外,在注册程序集时还有很多事情需要注意regasm.
例如,您必须使用regasm.exe的x64/x86版本,具体取决于您的系统.

  • 64位: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regAsm.exe
  • 86: C:\Windows\Microsoft.NET\Framework\v4.0.30319\regAsm.exe

遇到这么多问题后,我切换到了ServerManager.exe,这是SharpShell Tools的一部分.它可以在项目页面上下载.
使用非常简单:

  • 使用"加载服务器..."加载DLL
  • 单击"安装服务器(xYZ)"
  • 然后在"注册服务器(xYZ)"上

重新启动Windows资源管理器,您应该完成(不一定需要).

我完全同意上述教程的作者的观点:

服务器管理器工具

服务器管理器工具是我首选的安装/卸载和注册/取消注册方法,至少在开发过程中,因为它允许您安装和注册为单独的步骤.它还允许您指定是在32位还是64位模式下安装/卸载等.