小编Dan*_*lov的帖子

在Visual Studio Online中使用自定义NuGet提要

我有一个Visual Studio项目,它取决于我们公司的feed提供的一些NuGet包.可以从网上访问该Feed.该项目存储在Git存储库中的Visual Studio Online中.但那些NuGet包不是!我想使用VSO的自动构建和持续集成功能.我如何"告诉"VSO不应该从nuget.org下载那些NuGet包,应该从www.example.com获取?有办法吗?

git build-automation nuget azure-devops

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

如何从 OpenAPI 3.0 架构生成 ASP.NET Core 2 控制器?

我有一个 OpenAPI 3.0 架构 YAML 文档,它定义了一些带有所有必需参数和响应的 API 端点。

现在,我想生成一些样板服务器端代码:控制器及其方法。我的 API 将使用 ASP.NET Core 2 编写。那么,是否可以使用某种生成器,还是应该手动执行?

PS我知道我可以生成客户端代码,但我现在不需要它......

code-generation asp.net-core openapi swagger-codegen asp.net-core-2.0

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

如何在Windows服务安装程序中设置"与桌面交互"

我有一个Windows服务,在系统帐户下运行,并不时执行一些程序(是的,是的,我知道这是一个不好的做法,但这不是我的决定).我需要设置"与桌面交互"检查,以便在安装服务后查看已执行程序的gui.我尝试了几种方法,将下面的代码放在我的服务安装程序的AfterInstall或OnCommited事件处理程序中:

ConnectionOptions coOptions = new ConnectionOptions();
coOptions.Impersonation = ImpersonationLevel.Impersonate;

ManagementScope mgmtScope = new System.Management.ManagementScope(@"root\CIMV2", coOptions);
mgmtScope.Connect();

ManagementObject wmiService = new ManagementObject("Win32_Service.Name='" + ServiceMonitorInstaller.ServiceName + "'");

ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");
InParam["DesktopInteract"] = true;
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null); 
Run Code Online (Sandbox Code Playgroud)

要么

 RegistryKey ckey = Registry.LocalMachine.OpenSubKey(
    @"SYSTEM\CurrentControlSet\Services\WindowsService1", true);

  if(ckey != null)
  {
    if(ckey.GetValue("Type") != null)
    {
      ckey.SetValue("Type", ((int)ckey.GetValue("Type") | 256));
    }
  }
Run Code Online (Sandbox Code Playgroud)

这两种方法都"有效".他们设置了支票,但是在我启动服务之后启动了exe - 并且没有显示gui!所以,如果我停止服务,重新检查并再次启动它 - 宾果游戏!一切都开始并显示出来.实现结果的第二种方法是重新启动 - 之后还会显示gui.

所以问题是:是否有正确的方法来设置"与桌面交互"检查,所以它将开始工作而无需重新检查和重新启动?

操作系统:Windows XP(尚未试过Vista和7 ......)

c# service

6
推荐指数
2
解决办法
9225
查看次数

使用Hangfire:泛型Enqueue <T>方法抛出异常

我有一个安装了Hangfire.Core和Hangfire.SqlServer软件包的简单.NET 4.5控制台应用程序.

在我的主要方法中,我将这样的后台作业排入队列:

BackgroundJob.Enqueue<Test>((t) => Console.WriteLine(t.Sum(3,4)));
Run Code Online (Sandbox Code Playgroud)

我的Test类看起来像这样:

public class Test
{
    public Test(){ }

    public int Sum(int a, int b)
    {
        return a + b;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我F5我的程序时,我在Enqueue的行上得到一个例外:

"System.Core.dll中发生了'System.InvalidOperationException'类型的未处理异常附加信息:从范围''引用的'HangfireTest.Test'类型的变量't',但未定义"

当我用"new"在代码中创建我的Test类并使用非泛型Enqueue方法时 - 一切正常:

BackgroundJob.Enqueue(() => Console.WriteLine(new Test().Sum(3,4)));
Run Code Online (Sandbox Code Playgroud)

但我需要一个通用的,因为我想创建一个接口ITest并使用依赖注入来做这样的事情:

BackgroundJob.Enqueue<ITest>((t) => Console.WriteLine(t.Sum(3,4)));
Run Code Online (Sandbox Code Playgroud)

那么,我在这里做错了什么?

c# hangfire

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

Youtube v3 API 字幕下载

我正在尝试使用他们的 nuget 包从 Youtube 上的一些视频下载字幕。这是一些代码:

var request = _youtube.Search.List("snippet,id");
request.Q = "Bill Gates";
request.MaxResults = 50;
request.Type = "video";
var results = request.Execute();
foreach (var result in results.Items)
{
    var captionListRequest = _youtube.Captions.List("id,snippet", result.Id.VideoId);
    var captionListResponse = captionListRequest.Execute();
    var russianCaptions =
        captionListResponse.Items.FirstOrDefault(c => c.Snippet.Language.ToLower() == "ru");
    if (russianCaptions != null)
    {
        var downloadRequest = _youtube.Captions.Download(russianCaptions.Id);
        downloadRequest.Tfmt = CaptionsResource.DownloadRequest.TfmtEnum.Srt;
        var ms = new MemoryStream();
        downloadRequest.Download(ms);
    }
}
Run Code Online (Sandbox Code Playgroud)

当 Download 方法被调用时,我收到一个奇怪的 Newtonsoft.JSON 异常,它说:

    Newtonsoft.Json.JsonReaderException: 'Unexpected character encountered while parsing value: T. Path …
Run Code Online (Sandbox Code Playgroud)

.net c# youtube-api youtube-data-api

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

exePath是ConfigurationManager.OpenExeConfiguration中的无效异常

我有一个安装到C:\ Windows\System32的Windows服务.它有一个通常的.config文件,其中存储了一些应用程序设置.我有另一个应用程序,它将一些值写入此配置.当我运行这个应用程序时,它会在此行引发异常

var config = ConfigurationManager.OpenExeConfiguration(serviceExePath);

例外情况说:加载配置文件时出错:参数'exePath'无效.参数名称:exePath

当我把我的Windows服务放到另一个文件夹时,一切都还可以!是因为某些访问违规规则还是类似的?有没有办法为我的服务使用System32文件夹并打开其配置?

操作系统:Windows 7 x64

c#

5
推荐指数
2
解决办法
2万
查看次数