小编Nov*_*Eng的帖子

如何在未连接的计算机上安装适用于PowerShell的Nuget提供程序,以便可以从PS命令行安装nuget软件包?

我正在尝试pswindowsupdate.2.0.0.4.nupkg通过Powershell命令行在未连接到Internet的Win 7计算机上进行安装。我正在运行PS 5.1.14409.1005。我从https://www.preview.powershellgallery.com/packages/PSWindowsUpdate/2.0.0.4获得了nupkg

PS命令Install-Module -Name pswindowsupdate.2.0.0.4.nupkg -Repository {path to pswindowsupdate.2.0.0.4.nupkg}将引发错误消息:

PowerShellGet需要NuGet提供程序版本“ 2.8.5.201”或更高版本才能与基于NuGet的存储库进行交互。NuGet提供程序必须在“ C:\ Program Files \ PackageManagement \ ProviderAssemblies”或“ C:\ Users {我的登录名} \ AppData \ Local \ PackageManagement \ ProviderAssemblies”中可用。您也可以通过运行“ Install-PackageProvider-名称NuGet -MinimumVersion 2.8.5.201 -Force”来安装NuGet提供程序。您是否希望PowerShell现在安装和导入NuGet提供程序?

当然,说“是”无法安装NuGet提供程序,因为我没有连接到互联网。

我获得了nuget.exe(v4.7.0),将其存储在“ C:\ Program Files \ PackageManagement \ ProviderAssemblies”中,并将“ C:\ Program Files \ PackageManagement \ ProviderAssemblies”添加到我的path语句中。但是,执行Install-Module -Name pswindowsupdate.2.0.0.4.nupkg -Repository {path to pswindowsupdate.2.0.0.4.nupkg}仍然失败。

究竟是什么NuGet provider?仅仅是nuget.exe吗?如何获取和安装PowerShell的Nuget提供程序(v2.8.5.201或更高版本),以便可以从PowerShell命令行安装此nuget软件包?

注意:Visual Studio完全不涉及我的问题

powershell nuget

9
推荐指数
4
解决办法
3万
查看次数

如何使用 WIX 打包 VSTO Word 插件以进行部署(到 Office 32 位)?

VSTO Word add in在 VS 2017 Pro 中开发了一个。工作正常,准备部署。但是,我找不到用于打包我的工作程序以VSTO Word add in在我的开发机器以外的机器上使用。对于任何特定的机器,我需要将它部署一次,并让任何可能使用其帐户登录的用户都可以使用它。

第一次遇到这个,但它涉及使用 InstallShield Limited Edition,显然 VS 2017 不再可用。

试过这个,但它的一些步骤似乎缺少部分或说“做x”而不解释如何。

尝试了“InnoSetup”和“bovendor/VstoAddinInstaller”,但遵循“bovendor”过程会导致“Innosetup”编译器抛出错误(bovender 指示的节缺少必需的元素)。无法从 bovendor 获得响应。

搜索Microsoft文档,只是找不到程序。任何人都可以提供打包 VSTO Word 插件以进行部署的过程吗?

更新 使用 WiX 工具集成功打包并部署了我的加载项。看我下面的回答

vsto add-in wix ms-word setup-deployment

8
推荐指数
1
解决办法
3226
查看次数

为什么即使我使用 Write-Host -NoNewline,“Start-Transcript” cmdlet 也会插入换行符?

开始记录

Start-Transcript cmdlet 将全部或部分 PowerShell 会话的记录创建到文本文件中。脚本包括用户键入的所有命令以及控制台上显示的所有输出。

代码

cls
$global:scriptPath = Split-Path $script:MyInvocation.MyCommand.Path
$global:scriptName = $global:scriptPathAndName.Replace(($global:scriptPath + "\"),"")
$global:scriptNameNoExt = $global:scriptName.Replace(".ps1","")

Start-Transcript -LiteralPath ($global:scriptPath + "\" + (get-date -f "yyyy-MM-dd_HH-mm-ss") + "_" + $global:scriptNameNoExt + ".log") 

foreach ($n in 1..3)
{
    write-host -NoNewline ("test line " + $n + " ")
}

write-host 

Stop-Transcript
Run Code Online (Sandbox Code Playgroud)

控制台输出 - 按预期显示

Transcript started, output file is C:\temp\2019-02-06_07-13-43_test.log
test line 1 test line 2 test line 3 
Transcript stopped, output file is C:\temp\2019-02-06_07-13-43_test.log
Run Code Online (Sandbox Code Playgroud)

文字内容 …

powershell newline transcription

6
推荐指数
0
解决办法
1052
查看次数

如何使用整数键访问有序PowerShell散列表中的值?

我的要求是使用有序哈希表中的那些整数键来存储整数键和访问哈希表值.

什么有效

当我使用字符串键时,没问题:

cls

$foo=[ordered]@{}

$foo.add("12",1)
$foo.add("24",2)

write-host ("first item=" + $foo.Item("12"))
write-host ("second item=" + $foo.Item("24"))
Run Code Online (Sandbox Code Playgroud)

输出:

first item=1
second item=2
Run Code Online (Sandbox Code Playgroud)

使用支架失败

当我使用括号时,程序不会抛出异常,但它不返回任何内容:

$fooInt=[ordered]@{}

$fooInt.add(12,1)
$fooInt.add(24,2)

write-host ("first item=" + $fooInt[12])
write-host ("second item=" + $fooInt[24])
Run Code Online (Sandbox Code Playgroud)

输出:

first item=
second item=
Run Code Online (Sandbox Code Playgroud)

使用Item方法失败

当我使用Item方法和整数键时,PowerShell将整数键解释为索引而不是键:

$fooInt=[ordered]@{}

$fooInt.add(12,1)
$fooInt.add(24,2)

write-host ("first item=" + $fooInt.Item(12))
write-host ("second item=" + $fooInt.Item(24))
Run Code Online (Sandbox Code Playgroud)

输出:

Exception getting "Item": "Index was out of range. Must be non-negative and less than the size of the collection.
Parameter …
Run Code Online (Sandbox Code Playgroud)

powershell hashtable key

4
推荐指数
1
解决办法
1233
查看次数

如何使用从基类继承的事件在抽象类中定义EventHandler?

我的意图是重用SelectedValueChangedComboBoxClass 继承的事件(反过来,继承自ListControlClass)

在下面的代码中:SelectedValueChanged标记有屏幕截图中显示的编译器错误.我不打算hiding继承事件,所以我不想使用new关键字.我希望从DRT_ComboBox_Abstract派生的类能够按原样使用继承的事件.

如何定义EventHandler使用从基类继承的事件?(或者,在理解事件方面,我完全离开这个星球吗?)

注:"显示潜在修复"包围public event EventHandler SelectedValueChanged#pragma warning disable CS0108刚刚禁用警告.

屏幕截图 在此输入图像描述

using System;
using System.Windows.Forms;

namespace DRT
{
    internal abstract partial class DRT_ComboBox_Abstract : ComboBox
    {
        //SelectedValueChanged is tagged with the compiler error shown in the screenshot
        public event EventHandler SelectedValueChanged;

        public DRT_ComboBox_Abstract()
        {
            InitializeComponent();
        }

        public void Disable()
        {
            this.Enabled = false;
        }

        public void _OnSelectedValueChanged(object sender, System.EventArgs e)
        { …
Run Code Online (Sandbox Code Playgroud)

c# events inheritance

2
推荐指数
1
解决办法
277
查看次数

对于 TPL 数据流:如何获取 TransformBlock 生成的所有输出,同时阻塞直到所有输入都已处理完毕?

我向单个数据库同步提交一系列select语句(查询 - 数千个),并DataTable为每个查询返回一个语句(注意:该程序仅在运行时了解其正在扫描的数据库模式,因此指某东西的用途DataTables)。该程序在客户端计算机上运行并连接到远程计算机上的数据库。运行这么多查询需要很长时间。因此,假设异步或并行执行它们会加快速度,我正在探索TPL Dataflow (TDF)。我想使用该TDF库,因为它似乎可以处理与编写多线程代码相关的所有问题,否则需要手动完成。

显示的代码基于http://blog.i3arnon.com/2016/05/23/tpl-dataflow/。它很小,只是帮助我理解 的基本操作TDF。请知道我已经阅读了很多博客并编写了很多迭代代码来尝试解决这个问题。

尽管如此,在当前的迭代中,我有一个问题:

问题

代码位于一个button click方法内部(用户使用 UI 选择一台机器、一个 SQL 实例和一个数据库,然后开始扫描)。带有运算符的两行在await构建时返回错误:The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'。我无法更改按钮单击方法的返回类型。我是否需要以某种方式将button click方法与async-await代码隔离?

问题

尽管我找到了描述 的基础知识的漂亮文章TDF,但我找不到如何获取每次调用所产生的输出TransformBlock(即 a DataTable)的示例。虽然我想提交查询async,但我确实需要阻塞,直到提交的所有查询都TransformBlock完成。在所有查询完成之前,如何获取and 块 …

c# task-parallel-library tpl-dataflow

1
推荐指数
1
解决办法
1613
查看次数

为什么我不能直接访问我分配给WinForms Control.Tag属性的自定义对象的属性?

我想Control.Tag用我的自定义对象设置Winforms 属性,ButtonMetaData然后访问ButtonMetaData使用Control.Tag属性的属性.应该工作,因为Tag属性被定义为一个对象,对吗?见图1.

但是,为了访问属性ButtonMetaData,我不得不将Tag对象分配给中间对象变量(x在我的示例中)以访问ButtonMetaData属性.当我尝试使用已转换为的Tag对象访问它们时ButtonMetaData,编译器会抱怨.见图2.

为什么我不能直接访问ButtonMetaData使用已转换为的Tag对象的属性ButtonMetaData

图1

图1

图2

public class ButtonMetaData
{
    public bool clickedByUser;
    public bool clickedProgramatically;

    public ButtonMetaData(bool clickedByUser, bool clickedProgramatically)
    {
        this.clickedByUser = clickedByUser;
        this.clickedProgramatically = clickedProgramatically;
    }
}

private void Button1_Click(object sender, EventArgs e)
{
    Button button = (Button)sender;

    button.Tag = new ButtonMetaData(clickedByUser: true, clickedProgramatically: false);

    //BUILDS OK
    ButtonMetaData x = (ButtonMetaData)button.Tag;
    Console.WriteLine(x.clickedByUser);
    Console.WriteLine(x.clickedProgramatically);
    //BUILDS OK

    //DOESN'T BUILD …
Run Code Online (Sandbox Code Playgroud)

c# object-reference winforms

1
推荐指数
1
解决办法
52
查看次数