小编Nat*_*n A的帖子

在新的C#6字符串语法中转义引号

我对C#6中的新功能感到非常兴奋,包括新的字符串语法:

var fullName = $"My Name is {FirstName} {LastName}";
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何在括号内转义引号来执行以下操作:

bool includePrefix = true;

var fullName = $"My name is {includePrefix ? "Mr. " : ""}{FirstName} {LastName}";
Run Code Online (Sandbox Code Playgroud)

C#6不喜欢这样.String.Format在第二种情况下,我不得不恢复使用.是否可以使用新语法来转义引号?

更新:是的,我已尝试使用\转义,但它无法识别.

c# c#-6.0

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

带有PackageReferences的ClickOnce应用程序自动到先决条件

如何自动将ClickReference软件包包含在ClickOnce中?

我正在尝试从packages.config转换ClickOnce应用程序以使用PackageReferences,因为我有一个很好的30+ nuget包(主要是依赖项),它使我更容易升级我实际需要引用的少数几个.

问题是,一旦我这样做,所有nuget包程序集现在都被认为是"先决条件(自动)"而不是"包含(自动)",使ClickOnce部署跳过它们.它还为我提供了"......必须经过强签名才能被标记为任何自定义nuget包的先决条件".

更新:

事实证明,这根本不起作用.ClickOnce,period不包括System.Runtime等程序集.没有包含它的选项,即使在手动将所有程序集设置为Include之后,它也最终破坏了部署(由于System.Runtime的FileNotFoundException).我不得不恢复到packages.config.我希望看到ClickOnce更新以使用PackageReferences

c# clickonce nuget visual-studio-2017 packagereference

11
推荐指数
0
解决办法
1027
查看次数

Owin Hosting - CallCancelled CancellationToken

我试图了解如何使用IOwinRequest.CallCancelled CancellationToken IOwinRequest.我假设在请求变为无效时,令牌会被标记(对于以下情况):

  • 处理WebApp.Start返回的对象.
  • 取消或处理HttpClient.GetAsync任务.

在所有这些情况下,似乎永远不会标记CallCancelled请求.为什么?

编辑:我在我的代码中发现了一个错误,我的第一点"处理WebApp.Start返回的对象"现在正常工作.处置/取消的客户端请求仍然不会触发服务器请求令牌来标记.

对于某些背景,我正在尝试实现长轮询,其中服务器挂起请求线程,直到某些数据到达返回客户端,或者请求被取消.为了实现这一点,如果标记了取消令牌,我的挂起循环将会失败.如果没有标记,请求线程将永远不会结束,除非有东西要返回.由于永远不会标记令牌,因此我的服务器最终可能会收到永无止境的无限数量的请求.

asp.net asp.net-web-api owin

7
推荐指数
0
解决办法
747
查看次数

如何更改多对多表关系的命名约定?

如何更改自动生成的多对多表的命名约定?

假设我有两个类:

public class User
{
    public int UserId { get; set; }
    public virtual List<Role> Roles { get; set; }
}

public class Role
{
    public int RoleId { get; set; }
    public virtual List<User> Users { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

默认情况下,这将创建一个名为UserRoles的表.

我可以将一个表的名称更改为UsersInRoles,例如,在我的DbContext的OnModelCreating覆盖中使用以下内容:

modelBuilder.Entity<User>()
    .HasMany(p => p.Roles)
    .WithMany(p => p.Users)
    .Map(mc =>
    {
        mc.MapLeftKey("UserId");
        mc.MapRightKey("RoleId");
        mc.ToTable("UsersInRoles");
    });
Run Code Online (Sandbox Code Playgroud)

但是,我真正想要做的是更改命名约定,以便默认情况下,所有自动生成的多对多表都使用此新约定.我无法弄清楚如何做到这一点,或者甚至可能.我不希望每次指定其中一个关系时都必须指定9行额外代码.

我目前正在使用EF版本6.0.0-rc1.

entity-framework ef-code-first entity-framework-6

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

HttpRouteBuilder - 它去了哪里,为什么?

我将我的nuget包的Web API 2从RC1升级到5.0.0,并且傻眼了,发现曾经可以访问的HttpRouteBuilder是内置的.除此之外,HttpConfiguration.MapHttpAttributeRoutes不再存在重载,它将HttpRouteBuilder作为参数.为什么?

我正在使用它,它解决了我的项目中的一个主要问题.我该用什么呢?

背景:我正在编写一个使用Web API 2属性路由的服务器.我实现了一个继承自HttpRouteBuilder的类,这样我就可以为每个URI注入一些额外的路径段.例如,如果默认路由构建器最终为// myserver/user/update创建路由,则我的路由构建器会将该路由修改为// myserver/{instance}/user/update.我希望这是自动完成的,这样我就不必在我的数百个HttpGet,HttpPost等属性的每一个中都坚持这一点.那么现在我如何处理这一重大变化呢?

asp.net-web-api asp.net-web-api-routing

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

删除Visual Studio中未使用的C#代码

当我在Windows窗体上工作时,我意外地点击了按钮,现在我有一些与此点击事件相关的代码.我不需要它们,我想从代码中删除这些部分,但是,如果我这样做,Visual Studio会在编译时抱怨导致它搜索丢失的代码.如何摆脱代码中未使用的点击事件?

c# mouseclick-event visual-studio winforms

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

使用FromSeed自定义AutoFixure会导致异常

鉴于这两个类:

class Foo
{
    ...
}

class Bar
{
    public Foo FooBar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我已经设置了以下测试:

void Test()
{
    var fixture = new Fixture();

    fixture.Customize<Foo>(x => x.FromSeed(TestFooFactory));

    var fooWithoutSeed = fixture.Create<Foo>();
    var fooWithSeed = fixture.Create<Foo>(new Foo());

    var bar = fixture.Create<Bar>(); //error occurs here
}

Foo TestFooFactory(Foo seed)
{
    //do something with seed...

    return new Foo();
}
Run Code Online (Sandbox Code Playgroud)

我可以Foo使用和不使用种子值直接创建对象而没有任何问题.但是一旦我尝试创建一个Bar具有Foo属性的对象,我得到一个ObjectCreationException:

装饰的ISpecimenBuilder无法根据请求创建样本:Foo.如果请求表示接口或抽象类,则会发生这种情况; 如果是这种情况,请注册一个可以根据请求创建标本的ISpecimenBuilder.如果在强类型的Build表达式中发生这种情况,请尝试使用其中一个IFactoryComposer方法提供工厂.

我期望在创建过程中TestFooFactory传递null种子值Bar,就像我在Foo没有种子值的情况下创建时一样.我做错了什么,或者这可能是一个错误?

在我的实际场景中,我想自定义当我传入种子值时,AutoFixture如何使用某些对象的种子值,但是如果没有提供种子,我仍然希望AutoFixture默认为正常行为.

c# unit-testing autofixture

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

在Visual Studio 2013中生成.edmx EF6的问题

我试图在Visual Studio 2013中针对mssql 2012或2008数据库服务器和表集生成我的数据库的edmx文件.edmx文件生成没有问题,一切看起来很好,直到我尝试编译项目.表示数据库表的每个单个对象都会出错,并显示以下消息.

  1. using namespace指令只能应用于名称空间; 'System'是一种类型而不是命名空间
  2. "Model.blah.System"类型中不存在类型名称"Collections"

  3. "Model.blah.System"类型中不存在类型名称"DateTime"

using语句正确地位于生成的代码名称空间声明中,就像我过去看到的所有其他EF .edmx文件一样.

所有数据库对象的错误消息都是一致的.无论我做什么,我如何生成我的edmx模型,它是无用的,不可用.

我正在使用Visual Studio 2013 Update 2.我尝试使用EF5和EF6无济于事.我需要帮助找出为什么我的生活无法正确生成我的EF模型.

c# entity-framework-6

4
推荐指数
2
解决办法
994
查看次数

测量函数调用的CPU周期

我正在寻找一种方法来测量线程上的函数调用所需的cpu周期.

伪代码示例:

void HostFunction()
{
     var startTick = CurrentThread.CurrentTick;  //does not exist

     ChildFunction();

     var endTick = CurrentThread.CurrentTick;  //does not exist

     var childFunctionCost = endTick - startTick;
}

void ChildFunction() 
{
    //Do whatever...

    Thread.Sleep(3000);

    //Do some more...
}
Run Code Online (Sandbox Code Playgroud)

我不想使用秒表或其他时间测量,因为它将包括线程正在休眠的任何时间,我不想测量.我只想衡量实际工作.

这个测量需要在运行时工作,就像在我的伪代码中一样,因为结果用于确定是否应该允许子函数继续运行(我的实例是一个插件类型的体系结构),因此一个分析工具赢了'帮帮我

.net c# .net-4.5

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

将 Service Fabric 可靠集合迁移到 Kubernetes

我们正在将 Service Fabric 服务迁移到 Kubernetes。其中大多数是“无状态”服务并且易于迁移。然而,我们有一项“有状态”服务,它大量使用 SF 的 Reliable Collections。

K8s 有 Statefulsets,但这确实无法与 SF 的可靠集合相媲美。

是否有 .NET 库或其他解决方案可以在 K8s 中实现类似于 SF 的 Reliable Collections 的功能?

kubernetes .net-core azure-service-fabric

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