小编Lor*_*ash的帖子

Nuget.exe包警告:未指定说明.使用'描述'

我正在尝试通过命令行创建一个NuGet包,我似乎无法弄清楚如何设置描述,作者,标题,摘要,releaseNotes和所有者.包创建成功它只是给了我这个警告:

WARNING: Description was not specified. Using 'Description'.
WARNING: Author was not specified. Using 'User'.
Run Code Online (Sandbox Code Playgroud)

这是我的命令:

NuGet.exe pack "<MyProjectPath>.csproj" -OutputDirectory "<MyOutputDirectory>" -Properties Configuration=release;Description="MyDescription";Authors="MeMeMe...MeToo";Title="MyTitle";Summary="MySummary";releaseNotes="MyChanges;"Owners="MyCompany"
Run Code Online (Sandbox Code Playgroud)

我不确定这是否重要,但我使用的是来自Visual Studio Team Services下载的"CredentialProviderBundle.zip"文件的NuGet.exe.

nuget

8
推荐指数
2
解决办法
4929
查看次数

Visual Studio LightSwitch不会构建

我正在使用一个连接到SharePoint的旧C#LightSwitch HTML项目,我需要进行一些更改.不幸的是,不足以证明迁移到另一个技术/平台,但无论如何......

我启动我的Visual Studio 2015,项目将无法构建.即使我创建了一个新的C#LightSwitch HTML项目并尝试构建它,我当然也用Google搜索并尝试了我能想到的所有内容和长篇故事.这是我得到的错误:

为应用程序构建数据库时发生异常.部署计划生成期间发生错误.部署无法继续.错误SQL0:无法加载ID为"Microsoft.LightSwitch.DataRetentionDeploymentPlanModifier.v5.0"的必需参与者.错误SQL0:无法加载ID为"Microsoft.LightSwitch.LocalDbLocationModifier.v5.0"的必需参与者.GraphicsApp C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v14.0\LightSwitch\v5.0\Microsoft.LightSwitch.targets 160

如果我转到第160行(双击错误),我会看到这一点(从第160行开始):

<BuildSchema Inputs="@(ServerMetadataFiles)"
             ServerGeneratedMetadataFiles="@(ServerGeneratedMetadataFiles)"
             Collation="$(DatabaseCollation)"
             DatabaseProject="@(_DatabaseProject)"
             ProjectPath="$(MSBuildProjectFullPath)"
             OutputDirectory="Bin\Data"
             SqlExpressInstanceName="$(SqlExpressInstanceName)"
             ExternalDataSources="@(ServerExternalDataSources)"
             Condition="'$(SkipBuildSchema)' == ''"/>
Run Code Online (Sandbox Code Playgroud)

我已经尝试过搜索我能想到的所有内容,但除了这个链接之外,我找不到任何听起来相同的内容.但它正在谈论V4,并且只说解决方案是:

"右键单击解决方案资源管理器中的项目... [并]升级项目"

但这对我没有任何帮助,因为我没有看到升级任何东西的任何选项,而且我在我创建的全新项目中也遇到了同样的问题.

c# visual-studio-lightswitch lightswitch-2013

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

如何使用 Polly 和取消令牌进行重试?

我对 Polly 很陌生,所以与我尝试做的方法相比,可能有一种完全不同的方法,那是完全可以的。

我的目标是这样的:

  1. token可能因超时或请求而被取消
  2. 永远重试,直到成功或被token取消。
  3. 当请求取消等待时应立即退出

尽管我使用的方法似乎缺少一些东西,并且可能有更好/更干净的方法来完成我想要的事情。我特别想到这一行.WaitAndRetryForever(retryAttempt => TimeSpan.Zero,。我觉得我应该能够通过retryDelay这里而不是TimeSpan.Zero,但如果我在请求取消时这样做,它不会返回,直到retryDelay完成等待,而不是像我想要的那样立即返回。

我确实看到 .Execute 看起来可以使用取消令牌执行某些操作,但我不知道如何使用它,所以如果这是我的答案,请忽略我的其他漫谈。

以防万一 Polly NuGet 开发人员看到这一点,我期望看到的是一个重载,因为WaitAndRetryForever它将取消令牌作为参数,以便在被取消时它可以立即返回。我犹豫是否将此作为正式建议,因为我对波莉来说太陌生了,我不确定这是否有意义。

这是我目前正在使用的方法:

internal static void Retry(Action action, TimeSpan retryDelay, CancellationToken token)
{
    try
    {
        Policy
            .Handle<IOException>()
            .WaitAndRetryForever(retryAttempt => TimeSpan.Zero,
                (ex, delay, context) =>
                {
                    Task.Delay(retryDelay, token).GetAwaiter().GetResult();
                    token.ThrowIfCancellationRequested();
                    //Log exception here
                })
            .Execute(() =>
            {
                token.ThrowIfCancellationRequested();
                action.Invoke();
            });
    }
    catch (OperationCanceledException)
    {
        //Log cancellation here
        throw;
    }
    catch (Exception ex)
    {
        //Log …
Run Code Online (Sandbox Code Playgroud)

c# polly

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

FluentFTP:根据验证程序远程证书无效

当我尝试连接到我的 FTP 服务器以使用 FluentFTP 上传文件时,我得到以下信息:

根据验证程序,远程证书无效。

然而 FileZilla 工作正常,没有错误或警告。

我是不是做错了什么,如果它实际上是服务器的问题,我怎么能忽略这个错误

这是我的代码:

var credentials = new NetworkCredential(Username, Password);
FtpClient client = new FtpClient(Host, credentials)
{
    Port = Port,
    EncryptionMode = FtpEncryptionMode.Explicit
};
client.DataConnectionEncryption = true;

client.Connect();
var result = client.UploadFileAsync(FilePathName, RemotePathName, AllowOverwrite ? FtpExists.Overwrite : FtpExists.Skip, CreateRemoteDirectory, token).GetAwaiter().GetResult();
client.Disconnect();
Run Code Online (Sandbox Code Playgroud)

我也尝试添加事件 client.ValidateCertificate += Client_ValidateCertificate;

private static void Client_ValidateCertificate(FtpClient control, FtpSslValidationEventArgs e)
{
    e.PolicyErrors = SslPolicyErrors.None;
}
Run Code Online (Sandbox Code Playgroud)

但我无法让它工作,我仍然遇到同样的错误。

这是 FileZilla 的输出:

Status: Selected port usually in use by a different protocol.
Status: Resolving …
Run Code Online (Sandbox Code Playgroud)

c# ftp ssl-certificate fluentftp

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

从控制台或 Windows 服务以编程方式创建 Windows 会话

如何以编程方式登录到 Windows 以创建 Windows 登录会话?我需要一种适用于 WinForms 应用程序、控制台应用程序和(最重要的)Windows 服务的方法。

另一个要求是我需要它在运行程序/服务的本地系统以及远程系统上工作。

如果有一种方法可以使用 pInvoke/Win32 API 做到这一点,我也对此持开放态度。

我在研究中发现了这些类似的问题/答案:

以编程方式创建和启动 RDP 会话(无 gui)

这里的答案说这是可能的,但提供了一个链接,但链接中的示例代码不起作用

通过 Win32 API 从服务创建 Windows 会话

没有解决所问问题

以编程方式创建 Windows 会话

没有解决方案,但 OP 在评论中提到http://freerdp.com为他工作。

c# rdp windows-services activex winforms

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

具有输入参数和输出的Task.Run

这非常有效:

private void MainMethod()
{
    Task<bool> taskItemFound = new Task<bool>(ItemFound);
}

private bool ItemFound()
{
    //Do Work
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这有效,但是UGLY,我不能传递多个参数:

private void MainMethod()
{
    var startNew = Task<bool>.Factory.StartNew(TempMethod, "cow");
}

private bool TempMethod(object o)
{
    return ("holy " + o == "holy cow");
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个解决方案,它将Task<bool>从一个带有多个输入参数的现有方法中获得一个并返回一个bool.理想情况下,它看起来像这样:

Task<bool> taskItemFound = new Task<bool>(ItemFound(param1, param2, param3));
Run Code Online (Sandbox Code Playgroud)

c# task task-parallel-library

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