小编ibe*_*dev的帖子

如何在VS2015中上下移动线路

我不知道最近在Visual Studio 2015中是否有某些变化,但在我能够按下ALT + UP ARROW KEYALT + DOWN ARROW KEY向上或向下移动代码行之前,现在它没有做任何事情.

我进去了Tools > Options > Environment > Keyboard,我找不到像过去那样的叫做 ProjectandSolutionContextMenus.Item.MoveUp 或者 ProjectandSolutionContextMenus.Item.MoveDown

另外在VS2015列表中我没有看到这个选项:http://visualstudioshortcuts.com/2015/

怎么做到这一点?

keyboard-shortcuts visual-studio-2015

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

使用 ServiceCollection 升级到 .NET 6 后版本冲突

事实证明,从 .NET 5 升级到 .NET 6 并不像我预期的那么简单。

由于以下错误,我的所有单元测试项目都无法编译

Severity    Code    Description Project File    Line    Suppression State
Error   CS0433  The type 'ServiceCollection' exists in both 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' and 'Microsoft.Extensions.DependencyInjection, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'    Sample.DynamoDb.FunctionalTests C:\src\my-solution\test\Sample.DynamoDb.FunctionalTests\DependencyInjectionTests\GetServiceTests.cs 22  Active
Run Code Online (Sandbox Code Playgroud)

他们引用了依赖于版本 6 的类库,但由于某种原因,测试项目本身Microsoft.Extensions.DependencyInjection.Abstractions似乎存在依赖关系。Microsoft.Extensions.DependencyInjection可能是被我使用的一些软件包拖过去的(我不知道是哪一个)。

这是我的测试项目

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <Nullable>Enable</Nullable>
        <IsPackable>False</IsPackable>
        <IsPublishable>False</IsPublishable>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="FluentAssertions" Version="6.2.0" />
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />

        <PackageReference Include="xunit" Version="2.4.1" />
        <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
            <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
            <PrivateAssets>all</PrivateAssets>
        </PackageReference>
        <PackageReference Include="coverlet.collector" Version="3.1.0"> …
Run Code Online (Sandbox Code Playgroud)

.net-assembly .net-6.0

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

如果我有消息类型列表,如何在 MassTransit 中注册通用消费者适配器

我成功地将 MassTransit 用于一个愚蠢的示例应用程序,我从发布者控制台应用程序发布一条消息(一个事件),并在两个不同的消费者处接收它,这些消费者也是使用 RabbitMq 的控制台应用程序。

这是整个示例项目 git repo: https : //gitlab.com/DiegoDrivenDesign/DiDrDe.MessageBus

我想要一个包含 MassTransit 功能的项目,以便我的 Publisher 和 Consumers 项目对 MassTransit 一无所知。依赖关系应该朝这个方向发展:

  • DiDrDe.MessageBus ==> MassTransit
  • DiDrDe.MessageBus ==> DiDrDe.Contracts
  • DiDrDe.Model ==> DiDrDe.Contracts
  • DiDrDe.Publisher ==> DiDrDe.MessageBus
  • DiDrDe.Publisher ==> DiDrDe.Contracts
  • DiDrDe.Publisher ==> DiDrDe.Model
  • DiDrDe.ConsumerOne ==> DiDrDe.Contracts
  • DiDrDe.ConsumerOne ==> DiDrDe.MessageBus
  • DiDrDe.ConsumerOne ==> DiDrDe.Model
  • DiDrDe.ConsumerTwo ==> DiDrDe.Contracts
  • DiDrDe.ConsumerTwo ==> DiDrDe.MessageBus
  • DiDrDe.ConsumerTwo ==> DiDrDe.Model

请注意 DiDrDe.MessageBus 对 DiDrDe.Model 一无所知,因为它是一个通用项目,应该对任何消息类型都有效。

为了实现这一点,我正在实施适配器模式,以便我的自定义接口IEventDtoBus(发布事件)和IEventDtoHandler<TEventDto>(使用事件)是我的发布者和消费者都知道的。MassTransit 包装器项目(称为 DiDrDe.MessageBus)实现了一个EventDtoBusAdapter由 anIEventDtoBus和 a组成的适配器EventDtoHandlerAdapter<TEventDto>作为我唯一的IConsumer<TEventDto>由一个组成的泛型IEventDtoHandler<TEventDto>

我遇到的问题是 …

generics masstransit adapter autofac message-bus

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

如何为 .NET 7 Maui (Android) 配置 GitLab CI/CD

我有点震惊 Linux 不支持构建 .NET MAUI 应用程序,除非它们是

android                    .NET SDK Workload for building Android applications.
macos                      .NET SDK Workload for building macOS applications.  
maui-android               .NET MAUI SDK for Android                           
maui-tizen                 .NET MAUI SDK for Tizen                             
maui-windows               .NET MAUI SDK for Windows                           
runtimes-windows           Windows Runtime Packs                               
runtimes-windows-net6      Windows Runtime Packs                               
wasm-experimental          .NET WebAssembly experimental tooling               
wasm-tools                 .NET WebAssembly build tools                        
wasm-tools-net6            .NET WebAssembly build tools for net6.0  
Run Code Online (Sandbox Code Playgroud)

无论如何,我想知道 .NET Maui 开发人员如何在 GitLab 中实现 CI/CD 自动化。 是否有像 GitHub 或 Azure Pipelines 中那样的内置机制?还是必须手动配置?我可以看一个例子吗?

这是我到目前为止一直在尝试的, …

docker gitlab-ci .net-core maui

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

ASP.NET Web Api - 使用Chunked Transfer Encoding时,框架不会将JSON转换为对象

我在Android中有一个http客户端将HTTP PUT请求发送到使用C#和ASP.NET WebApi框架实现的REST API.

只要JSON字段与C#类中的属性匹配,框架就应该能够将JSON神奇地转换(反序列化)到模型类(普通对象)中.

问题是当该HTTP请求来与块传输编码,使内容长度= 0(根据http://en.wikipedia.org/wiki/Chunked_transfer_encoding)和框架是不是能够映射内是这样的JSON Http请求消息,因此参数为null.

看这个简单的例子:

    [HttpPut]
    public HttpStatusCode SendData(int id, int count, [FromBody]MyData records, HttpRequestMessage requestMessage)
    {
        var content = requestMessage.Content;
        string jsonContent = content.ReadAsStringAsync().Result; //this gets proper JSON
        return HttpStatusCode.OK;
    }
Run Code Online (Sandbox Code Playgroud)

问题是当客户端发送嵌入的http请求时,记录为空.

据我所知,Chunked Transfer编码只是一个传输属性,http客户端或服务器不应该担心应用层(传输层的业务).但似乎框架并没有按照我的意愿来管理它.

我可以从HttpRequestMessage手动检索JSON并将其反序列化为MyData对象,但我无法利用ASP.NET框架的魔力.而且您知道规则:您添加的代码越多,您可能会引入的错误就越多.

有没有办法处理带有JSON的Http Put请求,这些请求来自ASP.NET Web Api 2中的分块传输

编辑:这是此示例的模型类,框架应在反序列化JSON时实例化

public class MyData
{
    public string NamePerson {get; set;}
    public int Age {get; set;}
    public string Color {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

c# json http-content-length chunked-encoding asp.net-web-api

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

使用gulp-typescript在VS2015中不显示Typescript编译错误

这是几天前工作正常的事情,所以我不确定自那时以来发生了什么变化(除了更新到ASP.NET Core RC2并为我记得安装VS2015的某些扩展)

问题是当从VS2015运行Gulp任务来编译我的打字稿文件时,如果它出现错误,例如:

[10:02:54] Compiling typescript into javascript
[10:02:56] TypeScript: 1 semantic error
[10:02:56] TypeScript: emit succeeded (with errors)
[10:02:56] Finished 'compile' after 2.47 s
Process terminated with code 0.
Run Code Online (Sandbox Code Playgroud)

没有任何错误描述.

在CMD:

$ tsc -v
Version 1.8.10
Run Code Online (Sandbox Code Playgroud)

在VS2015 Package Manager控制台中:

PM> tsc -v
Version 1.8.10
Run Code Online (Sandbox Code Playgroud)

所以我认为VS2015至少在PATH中使用相同的打字稿编译器,这应该不是问题.这也是最新版本,但我尝试过1.7,同样的事情发生了.

我的任务:

gulp.task('compile', function () {
    log('Compiling typescript into javascript');
    return gulp
            .src(config.allts)
            .pipe($.sourcemaps.init())
            .pipe($.typescript({
                noImplicitAny: true,
                target: 'ES5'
            }))
            .pipe($.sourcemaps.write('.'))
            .pipe(gulp.dest(config.compileFolder));
});
Run Code Online (Sandbox Code Playgroud)

我正在使用:

"gulp-typescript": "2.10.0"
Run Code Online (Sandbox Code Playgroud)

虽然我尝试过最新的:

"gulp-typescript": "2.13.4"
Run Code Online (Sandbox Code Playgroud)

没有运气.

据我所知,我在项目的根目录中不需要tsconfig.json,因为我正在使用gulp-typescript并且我已经在gulp任务本身传递了compilerOptions,所以我删除了tsconfig.json,因为它似乎没有要使用的.

如果我从gulp任务中删除所有compilerOptions: …

typescript gulp visual-studio-2015 gulp-typescript

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

序列化和反序列化域事件以在通用实现中从事件存储中保留和检索

我正在使用DDD与CQRS和事件采购.我需要在我的自定义实现中使用事件存储(特别是此事件存储)IEventStore来持久化并检索域事件,但我遇到了处理序列化/反序列化的方法时遇到困难.

这是我正在实现的接口:

public interface IEventStore
{
    Task<IEnumerable<IDomainEvent>> GetEventsAsync(Identity aggregateIdentity, Type aggregateType);

    Task PersistAsync(IAggregateRoot aggregateRoot, IEnumerable<IDomainEvent> domainEvents);
}
Run Code Online (Sandbox Code Playgroud)

在我的实现之外,IEventStore我可以将每个映射器都包含IDomainEvent在一些可序列化/可反序列化的EventDto或json字符串中.那不是问题.但这些是我的限制:

  • 我的域事件是实现的不可变对象IDomainEvent(即:没有setter)

  • 我的域事件并不总是以通用方式容易地序列化/反序列化.它们通常具有抽象或接口属性,因此我的域事件和一些可序列化对象(如字符串json或事件DTO)之间的具体映射器在我的IEventStore实现之外决定.

  • 我的IEventStore实现需要在一个通用的方式是,如果我添加新的域的事件类型,我应该不需要碰任何东西的范围内IEventStore实施

  • 我的IEventStore实现可以接收注入的一些特定实现IMapper<TSource, TDestination>,以便我可以使用它们在特定类型(而不是接口)之间进行序列化/反序列化.

    public interface IMapper<in TSource, out TDestination>
    {
        TDestination Map(TSource source); // I have implementations of this if needed
    }
    
    Run Code Online (Sandbox Code Playgroud)

以下是我的尝试:

public class MyEventStore
    : IEventStore
{
    private readonly IStreamNameFactory _streamNameFactory;
    private readonly …
Run Code Online (Sandbox Code Playgroud)

c# reflection serialization domain-events event-store

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

Azure 创建最基本的应用服务来通过门户提供带或不带节点的静态文件

我对应用服务内部的工作原理感到非常困惑。我正在探索它,想通过门户创建一个简单的应用服务来提供静态文件,但只找到了一个使用 shell 的教程,而不是 Azure 门户,它还需要我不需要的存储等服务。

这是我尝试过的:

  1. 获得订阅并创建了附加到免费试用订阅的资源
  2. 使用新的 Linux 服务计划和代码(不是容器)在 Linux 上创建基本(免费)应用服务。我无法选择仅具有静态 Web 服务器的任何堆栈或运行时,因此我选择 Node (LTS)。我将启动命令留空(稍后我将对此进行扩展)。Http 版本 1.1 或 2 似乎没有什么区别。FTP 已启用。
  3. 资源已正确创建,我可以看到典型的托管启动网页 欢迎页面
  4. 我连接到 SFTP,可以看到我有一个路径 site/wwwroot,其中有一个文件,hostingstart.html该文件看起来与我访问网站 URL 时看到的屏幕截图中的欢迎页面完全相同。我对自己说:“太棒了!我可以简单地编辑这个 html,我应该看到结果”。错误的。它似乎不是正在提供的 html。不知道为什么它在那里,但如果我删除它,我仍然在我的网站 URL 上看到相同的着陆页。
  5. 我创建了一个 site/wwwroot/index.html 但没有运气。它没有被服务。也许 Node 默认情况下没有配置这样做。
  6. 我创建了一个简单的 server.js,它能够静态提供任何文件: https: //github.com/TheJaredWilcurt/NPM-Free-Server所以我使用 FTP 放置 site/wwwroot/server.js 并留下索引.html(在我的本地主机中它可以工作:))。
  7. 我在应用服务中配置了一个初始命令,node server.js以便它可以运行并提供页面服务,然后重新启动服务器。没什么,没有效果。
  8. 我可以在日志中看到我的 server.js 正在运行。我可以看到一条痕迹,表明它正在 localhost:8000 上运行

在这个阶段,我们已经进行了几个小时的调查,但没有运气。没那么难!我发现以下问题令人惊讶地没有得到解答:https://github.com/MicrosoftDocs/azure-docs/issues/32572#issuecomment-551053105

有人能解释一下吗?我愿意接受建议。我的目标是:拥有(仅)一个应用程序服务,通过 Portal 创建一个静态 index.html 和一个 hello world

塔!

更新 1:感谢/sf/users/13166751/的建议。但我想强调需要应用程序服务,因为它用于培训目的,并且我希望从非常基本的动态应用程序到具有相同服务和持续部署的更复杂的动态应用程序。

azure node.js azureportal azure-web-app-service

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

Unable to push nuGet packages to GitLab with dotnet CLI due to Unauthorized error

GitLab now supports nuget public and private feed repository. I've got a public project (e.g: https://gitlab.com/sunnyatticsoftware/sasw-test-support) I create an access token for my user with api and write_repository (e.g: AAABBBCCCDDD)

I create a group variable in my CI/CD: SASW_API_ACCESS_TOKEN: AAABBBCCCDDD. All normal.

Then I create the multi stage CI/CD script to build, pack and publish. When attempting to publish the nuGet package with the following: dotnet nuget push **/*.nupkg --source https://gitlab.com/api/v4/projects/17141695/packages/nuget/index.json --api-key AAABBBCCCDDD --skip-duplicate

I get the …

nuget-package gitlab gitlab-ci dotnet-cli

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

使用 AspNet [FromQuery] 模型绑定中的 EnumMember 值反序列化枚举

我在 .NET 6 项目中有一个端点Microsoft.NET.Sdk.Web,它使用标准 [FromQuery] 将查询字符串反序列化为 .NET 对象

[Route("[controller]")]
public class SamplesController
    : ControllerBase
{
    [HttpGet]
    public IActionResult Get([FromQuery]QueryModel queryModel)
    {
        if (!queryModel.Status.HasValue)
        {
            return BadRequest("Problem in deserialization");
        }
        
        return Ok(queryModel.Status.Value.GetEnumDisplayName());
    }
}
Run Code Online (Sandbox Code Playgroud)

该模型包含一个枚举

public class QueryModel
{
    /// <summary>
    /// The foo parameter
    /// </summary>
    /// <example>bar</example>
    public string? Foo { get; init; } = null;
    
    /// <summary>
    /// The status
    /// </summary>
    /// <example>on-hold</example>
    public Status? Status { get; set; } = null;
}
Run Code Online (Sandbox Code Playgroud)

枚举具有EnumMember …

enums jsonserializer custom-model-binder asp.net-core system.text.json

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