小编g.p*_*dou的帖子

Azure Service Bus:邮件大小,技术限制和定价

我正在尝试阅读Azure Service Bus队列技术规格和定价,但我不清楚

1)邮件是否有任何大小限制?

2)定价是否可能不依赖于消息大小?看来,但我无法相信.

(我希望每封邮件发送大约10K - 100K数据.在多个实例中运行的并发相同工作者角色将使用消息队列.

Thx提前

azure

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

有没有办法将NUnit TestCaseAttribute与ValuesAttribute一起使用?

我正在密集使用NUnit TestCase属性.对于我的一些测试,使用20多个TestCase属性进行注释,定义了20多个测试用例.但是,我想测试所有20个测试用例,并说出额外的值,可能是1或0.这对我来说意味着不同的测试用例.使用ValuesAttribute可以轻松实现:

我目前的状态:

[TestCase(10, "Hello", false)] // 1
[TestCase(33, "Bye", true)]    // 2
// imagine 20+ testcase here)]
[TestCase(55, "CUL8R", true)]    // 20+
public void MyTest(int number, string text, bool result)
Run Code Online (Sandbox Code Playgroud)

我想做类似的事情(我不能:)

[TestCase(10, "Hello", false)] // 1
[TestCase(33, "Bye", true)]    // 2
// imagine 20+ testcase here)]
[TestCase(55, "CUL8R", true)]    // 20+
public void MyTest([Values(0,1)] int anyName, int number, string text, bool result)
Run Code Online (Sandbox Code Playgroud)

我为什么要这样做?因为这40多个组合意味着不同的测试用例.不幸的是,NUnit不允许同时使用[TestCase]和[Values]属性,测试运行器需要与TestCaseAttribute中列出的参数数量完全相同的参数.(我可以理解建筑师,但仍然......)我唯一能想到的是:

[TestCase(1, 10, "Hello", false] // 1
[TestCase(1, 33, "Bye", true]    // 2 …
Run Code Online (Sandbox Code Playgroud)

c# nunit

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

上下文菜单中缺少ASP MVC 5项目"New Scaffolded Item ..."

这不是重复的.看到我的评论,还看到我的额外诊断.结果

编辑 现在变得更加奇怪了.第二天早上我打开了我的VS和这个项目,还有Scaffolding菜单项.使用它们几次,然后消失了.我以为我在项目中做了一些事情,所以源代码控制撤消所有:没有帮助.VS关闭/开放:没有帮助.机器重启:没有帮助.创建一个全新的ASP MVC 5项目,该项目也没有任何MVC之类的竞争菜单,既没有右键单击控制器或视图:没有帮助.这太可怕了.但除了可怕之外,我在工作中几乎被禁用:-(有人知道发生了什么吗? 编辑

使用VS 2013更新3我创建了一个新的ASP MVC 5项目.右键单击Solution Explorer中的Controllers文件夹,上下文菜单中缺少'New Scaffolded Item ...'.顺便说一句,添加控制器也丢失了.见附图.

额外的诊断结果:

1)转移到另一台机器的完全相同的解决方案按预期工作.解决方案是通过源代码控制传输的,所以它是相同的.csproj文件(好.csproj.user可以不同)

2)我们谈论的解决方案是在我的机器中创建的,它展示了这个问题

3)如果我重复实验,在我的机器中创建一个新的ASP MVC 5 Web应用程序,则缺少上下文菜单.

Controllers文件夹的上下文菜单

我错过了什么?Thx提前

asp.net-mvc visual-studio visual-studio-2013

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

如何确保Visual Studio在构建期间使用哪种TypeScript编译器?

上下文

最近,TypeScript编译器(1.8.x)也可以作为Nuget Package使用.然而这里有一个有点混乱的事实,有两个包

  • a)Microsoft.TypeScript.Compiler(无依赖关系)
  • b)Microsoft.TypeScript.MSBuild(**没有依赖,但包含TypeScript.Compiler ...顺便说一句:为什么?)

在我的项目(.csproj)中,TypeScript版本最初设置为1.7

<TypeScriptToolsVersion>1.7</TypeScriptToolsVersion>
Run Code Online (Sandbox Code Playgroud)

我想知道安装a)或b)后会发生什么

问题/问题

我不知道如何诊断Visual Studio 2015构建期间关于TypeScript编译的确切情况的简单方法.

  • 我不知道如何看到tsc.exe的任何输出(如版本号,路径等)
  • 我不知道如何查看任何结果(有效)设置,MSBuild任务将从哪个路径启动tsc.exe

Diganostic结果(可选阅读,如果有人有兴趣)

由于我缺乏知识,我不得不使用Mark Russinovich的ProcessMonitor来确保发生了什么.这是一个问题:如何做到这一点更简单?

  • 安装a)除了将tsc的工作实例复制到项目的/ packages文件夹之外什么都不做.没有触及.csproj文件.因此,最初配置的MSBuild任务将应用于.ts文件,并且原始安装的tsc 1.7正在从Program Files运行

  • 卸载a)正确"恢复"原始状态.(嗯,这只是从/ packages文件夹中删除包

  • 安装b)a)相同+更改.csproj中的MSBuild任务条目.因此,新的tsc 1.8将从/ package文件夹运行.

  • 卸载b)从.csproj文件中删除所有,包括所有与TypeScript相关的MSBuild任务.这是静默禁用所有ts文件编译(没有警告和错误).恢复默认行为的简单方法是向项目添加一个虚拟.ts文件,该文件将默认的 MSBuild任务插回到.csproj文件中.

安装被触及设置:

<TypeScriptToolsVersion>1.7</TypeScriptToolsVersion> 
Run Code Online (Sandbox Code Playgroud)

回到问题

有没有比使用ProcessMonitor更简单的方法来查看VS 2015构建过程中TypeScript的确切情况?

msbuild visual-studio nuget typescript

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

如何使用 IHostedService 访问控制台应用程序中的命令行参数?

我无法弄清楚如何访问我的ConsoleHostedService实现类中的命令行参数。我在源代码中看到CreateDefaultBuilder(args)以某种方式将其添加到配置中...名为Args...

有主程序:

internal sealed class Program
{
    private static async Task Main(string[] args)
    {
        await Host.CreateDefaultBuilder(args)
            .UseContentRoot(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))
            .ConfigureServices((context, services) =>
            {
                services.AddHostedService<ConsoleHostedService>();
            })
            .RunConsoleAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)

和托管服务:

internal sealed class ConsoleHostedService : IHostedService
{
    public ConsoleHostedService(
        IHostApplicationLifetime appLifetime,
        IServiceProvider serviceProvider)
    {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

.net console-application .net-core ihostedservice

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

如何在 VS 2022 中调试 Roslyn 源生成器?

语境

我能够通过将项目属性/调试启动设置为 Roslyn 组件,然后将目标项目组合设置为我的使用项目之一来调试 VS 2019 中的源生成器:

在此输入图像描述 在此输入图像描述

现在 VS 2022 中似乎缺少此功能,我无法使用具有类似设置的启动配置文件 UI 创建启动配置文件。

问题

如何在 Visual Studio 2022 中调试 Roslyn 源生成器?

debugging visual-studio roslyn sourcegenerators visual-studio-2022

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

使用Microsoft.Build.Evaluation(而不是Engine)修改编程csproj文件

我想阅读,修改和写回csproj文件.我发现了这段代码,但不幸的是引擎类被折旧了.

Engine engine = new Engine()
Project project = new Project(engine);
project.Load("myproject.csproj");
project.SetProperty("SignAssembly", "true");
project.Save("myproject.csproj");
Run Code Online (Sandbox Code Playgroud)

所以我继续根据提示我应该使用Evaluation.ProjectCollection而不是Engine:

var collection = new ProjectCollection();
collection.DefaultToolsVersion = "4.0";
var project = new Project(collection);

// project.Load("myproject.csproj") There is NO Load method :-(
project.FullPath = "myproject.csproj"; // Instead of load? Does nothing...

// ... modify the project
project.Save(); // Interestingly there is a Save() method
Run Code Online (Sandbox Code Playgroud)

没有Load方法了.我试图设置属性FullPath,但项目似乎仍然是空的.错过了什么?

(请注意我知道.csproj文件是带有XSD架构的标准XML文件,我知道我们可以使用XDocument或XmlDocument来读/写它.这是一个备份计划.只需看看.Save()方法就可以了.项目类我认为如果我无法加载现有的.csproj,我会错过一些东西.thx)

c# msbuild projects-and-solutions csproj

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

如何在构造函数中使用AutoMapper映射到"this"

我有一个源类型,它具有属性和目标类型,具有完全相同的属性.

为AutoMapper配置一个简单的映射后,如:

Mapper.CreateMap<MySourceType, MyDestinationType>();
Run Code Online (Sandbox Code Playgroud)

我想有一个MyDestinationType的构造函数,它有一个MySourceType参数,然后自动初始化创建类型的属性,源代码如下:

public MyDestinationType(MySourceType source)
{
    // Now here I am do not know what to write.
}
Run Code Online (Sandbox Code Playgroud)

我找到的唯一解决方法是为其创建一个静态工厂方法

public static MyDestinationType Create(MySourceType source)
{
     return Mapper.Map<MyDestinationType>(source);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法不让这种静态的丑陋?

c# automapper automapper-2 automapper-3

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

实现同步方法的异步版本:如何返回常量为1的Task <int>?

我有一个sync方法,现在我想实现它的异步版本.幸运的是,底层调用已经有一个异步版本(dbSet.SaveChangesAsync()),但是在我的算法中有一个if分支以常量文字1返回.

我不知道如何在异步版本中实现这个部分?

同步版本:

    public virtual int Add(T entity)
    {
        SetLogContext(entity, _logctx);
        dbSet.Add(entity);

        if (isAutonomous)
        {
            return ctx.SaveChanges();
        }
        return 1;
    }
Run Code Online (Sandbox Code Playgroud)

异步版本:

    public virtual Task<int> AddAsync(T entity)
    {
        SetLogContext(entity, _logctx);
        dbSet.Add(entity);

        if (isAutonomous)
        {
            return ctx.SaveChangesAsync();
        }
        return ??? // What to write here?
    }
Run Code Online (Sandbox Code Playgroud)

.net c# async-await

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

我可以在*没有* Blazor 的情况下使用 IJSRuntime(例如在纯 ASP.NET Core Razor 页面中)吗?

我知道 IJSRuntime 实现(在 Blazor 服务器应用程序中)使用 SignalR 与其客户端通信以执行给定的 JavaScript 函数。

问题

是否有可能在纯 ASP.NET Pages 应用程序中拥有这个唯一的功能(无需重新发明轮子并从头开始实现)?据我了解,我们必须有一个 SignalR 通道、一个客户端脚本和服务器端的 IJSRuntime 实现。(没有 Blazor SPA 基础设施和所有渲染技巧)

razor asp.net-core razor-pages blazor-server-side

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