小编tra*_*max的帖子

仅为一个通用命令处理程序注册Autofac装饰器

我们有许多通用命令处理程序,由Autofac以开放式通用方式注册.我们有几个装饰器来装饰所有手柄.现在我需要为一个命令处理程序注册一个装饰器,而不是影响所有其他命令处理程序.这是我的尝试,但我似乎没有正确注册.

这是与我们的代码类似的简单测试代码:

我们有数百个命令如下:

class NormalCommand : ICommand { }

// This command handler should not be decorated
class NormalCommandHandler : ICommandHandler<NormalCommand>
{
    public void Handle(NormalCommand command) { }
}
Run Code Online (Sandbox Code Playgroud)

而且我想TestCommandHandler在装饰器中包装TestCommandHandlerDecorator

class TestCommand : ICommand { }

// And I would like to put decorator around this handler
class TestCommandHandler : ICommandHandler<TestCommand>
{
    public void Handle(TestCommand command) { }
}

// This decorator should be wrapped only around TestCommandHandler
class TestCommandHandlerDecorator : ICommandHandler<TestCommand>
{
    private readonly ICommandHandler<TestCommand> decorated; …
Run Code Online (Sandbox Code Playgroud)

c# decorator autofac

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

执行基于Xunit的测试,由Teamcity中的特征过滤

我正在将我的项目从NUnit移动到xUnit测试框架.我们正在通过MSBuild任务在TeamCity中执行测试.我想按类别排除测试.在NUnit和Teamcity中,这很简单.

我将如何在xUnit中进行此操作?

Msbuild目标如下所示:

  <Target Name="xUnitTests">
    <xunit Assembly="$(SolutionDir)\Tests\bin\Debug\MyApp.Tests.exe" />
  </Target>
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想Exclude="Category=database"<xunit>元素添加为元素,但这是无效的.

我很快查看了xUnit源代码,但没有找到msbuild runner的这个选项.

在msbuild runner中忽略特征测试的其他任何替代方法?

msbuild teamcity xunit xunit.net

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

将TeamCity连接到Visual Studio Online

我正在尝试从本地TFS迁移到Visual Studio Online.我们有相当精细的TeamCity构建过程,我们不想迁移,因此让TeamCity与VSO合作将是理想的.

我已经创建了替代用户凭据(根据本文)并在TeamCity中使用这些凭据.但是当我在TeamCity中创建新的VCS时,我收到连接错误:

TF30063: You are not authorized to access https://myproject.visualstudio.com/DefaultCollection/MyProject
Run Code Online (Sandbox Code Playgroud)

我已经尝试了我的实际凭证(不是替代的凭证)但没有改变 - 同样的错误.

此外,我尝试使用tf命令行工具的替代凭据,无法输入替代凭据 - 弹出一个窗口,询问我的LiveId.

知道如何解决这个问题吗?

ps这是TeamCity配置的样子:

在此输入图像描述

tfs teamcity-8.0 tfvc azure-devops

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

ASP.Net Identity 2.0:用户是System.Web.Security.RolePrincipal,为什么?

我正在尝试在现有应用程序中实现Asp.Net Identity 2.0(OWIN),并且在角色方面遇到各种各样的麻烦.我从项目模板创建了一个示例项目(据我所知)我已经将所有内容复制到我的应用程序中.我修改了连接信息,因此身份验证表来自我自己的Sql数据库,而不是默认的本地数据库.

一切似乎都很好.这些表在启动时初始化(创建),我可以创建新用户,为该用户分配角色,并以该用户身份登录.但是当我尝试检查用户是否处于特定角色时,我得到一个异常,表明找到本地数据库时出现问题.好吧那是因为我没有使用本地数据库.那么为什么我的应用程序会在(不存在的)本地数据库中寻找角色?

为了排除我的Sql实例中的怪异,我更改了示例应用程序的连接数据,以便它指向我的数据库并运行它.我可以使用我在应用程序中创建的用户登录,甚至可以成功地轮询用户以查询相关角色.我通过直接检查表确认了这一点,并验证了用户,角色和用户角色关联都在那里.

这是我注意到的.当我运行示例应用程序时,用户是一个实例System.Security.Claims.ClaimsPrincipal.但是,当我运行我的应用程序时,用户是一个实例System.Web.Security.RolePrincipal.

那么,我错过了什么?为什么我的应用程序返回RolePrincipal而不是ClaimsPrincipal?我在哪里可以找到线索?

我正在把头发拉出来,我没有多少离开!任何帮助将不胜感激.

asp.net owin asp.net-identity

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

在C#中存储长二进制(最多512位)的最佳方法

我试图找出在C#中存储大型二进制(超过96位)数字的最佳方法

我正在构建应用程序,它将自动为轮班分配工作人员.换档时间可短至15分钟(但未来可能会更小).为了避免双重预订工人,我计划得到他们每日时间的二进制映射:24小时以相等的块(15分钟)分开,每个块都有一个标志(0表示免费,1表示忙)所以当我们试图给另一个转移到工人,我们可以对工人的每日可用性与轮班时间进行二元比较.简单易行.

但是C#long只允许最多64位,并且在当前设置下我需要至少96位(每个周期24小时*60分钟/ 15分钟).这种表示必须是内存友好的,因为一次操作大约有一百万个对象.

我考虑的其他选择很少:

  • 串.内存饥渴,实现逐位操作并不简单
  • 比特数组.但据我所知,C#没有位类型
  • 无符号整数数组.每个数组仅代表一天的一部分.我能想到的最好的

还有其他建议吗?

提前致谢!

c# bit-manipulation bit

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

Resharper“无建议”框

我注意到Resharper在C#类的新属性上添加了“无建议”框。像这样:

没有建议框很烦人

此“无建议”框不会向代码添加任何内容,只会阻碍下面的代码行,这很烦人。

任何使Resharper不显示此框的方法?

resharper visual-studio-2013

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

VSTS - 连接到Azure Active Directory后无法进行git推送

我已将我的VSTS帐户切换为连接到Azure Active Directory,因为我无法推送/拉入VSTS遥控器.每当我访问远程时,我都会通过Microsoft Live登录提示.但是,当我提供我的VSTS电子邮件时,我得到了回复

该Microsoft帐户不存在.输入其他帐户或获取新帐户.

Microsoft Live Signin

嗯,是的,确实这不是Microsoft Live帐户 - 这是Azure AAD帐户.我已经检查了我的其他帐户也是AAD - 同样的交易,但旧的帐户是MS Live - 我通过这个屏幕,实际上问我的密码.

如果我忽略这个提示,在命令行中我被要求输入用户名和密码 - 我提供了相同的用户名和以前生成的个人访问令牌,我通过 - 我可以推送和拉动这些.

不完全确定这里发生了什么,但我曾经能够将AAD凭证用于访问VSTS,之前没有发生任何这些事情.

我做错了什么以及如何解决这个问题?

ps使用git v2.14.1.windows.1; 适用于Windows 1.12.0的Git Credential Manager.如果我连接到Visual Studio中的项目,我会看到相同的内容 - 一旦我尝试推/拉,我就会看到这个屏幕.

git azure-active-directory azure-devops

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

为什么asp.net Identity api中的所有数据库访问方法都标记为异步

考虑这个简单的伪代码

User logs in 
 Application access database to try retrieve the login using provided password and username
if record is found then show requested page otherwise display login with error message
Run Code Online (Sandbox Code Playgroud)

这如何从异步中获益?当然,在数据库搜索记录之前,应用程序无法继续.

asp.net async-await asp.net-identity

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

在 OpenXML 中处理 Word 文档时从 OpenXmlElement 获取 DocumentPart

我正在使用 OpenXML API 修改 docx 模板并遇到问题。

我需要将图像插入到某个位置 - 该位置由内容控制元素定义,该元素可以位于文档的主要部分、页眉或页脚中。

我得到这样的内容控制:

static IEnumerable<TElement> GetDecendants<TElement>(OpenXmlPart part) where TElement : OpenXmlElement
{
    var result = part.RootElement
        .Descendants()
        .OfType<TElement>();

    return result;
}
Run Code Online (Sandbox Code Playgroud)

稍后,我需要通过此管道将图像插入到文档的正确部分

internal static OpenXmlElement InsertImage(OpenXmlPart documentPart, Stream stream, string fileName, int imageWidth, int imageHeight)
{
    // actual implementation that is tested and works
}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,当我发现需要用图像替换的 ContentControl 元素时,我没有引用documentPart- 我只有引用 soSdtRunSdtBlock

有没有办法导航到documentPartfrom SdtRun?我已经检查过.Parent,但找不到从 到 的方法OpenXmlElement-OpenXmlPart这些位于不同的层次结构中。

c# ms-word openxml openxml-sdk

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

NuGet参考存储在哪里?

我无法获得这个C#解决方案(点击下载 - 666MB在这里浏览GitHub)来编译:

我得到的错误是

此项目引用此计算机上缺少的NuGet包.使用NuGet Package Restore下载它们.有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105.丢失的文件是..\packages\Accord.3.8.0\build\Accord.targets.bootcamp_basecamera C:\ Users\MyUser\Desktop\ComputerVision_Bootcamp-master\bootcamp_basecamera\bootcamp_basecamera\bootcamp_basecamera.csproj 144

boot_camp_basecamera.csproj中有问题的行是:

<Error Condition="!Exists('..\packages\Accord.3.8.0\build\Accord.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Accord.3.8.0\build\Accord.targets'))" />
Run Code Online (Sandbox Code Playgroud)

我已经在StackOverflow上查看了每个NuGet问题/解决方案,但没有一个答案对我有用.

我尝试了包恢复,我手动卸载了所有NuGet包并再次安装它们.

这并没有使错误消息消失.

因此,我想问一下这个错误消息来自何处.它说"这个项目引用......".我甚至删除了package.config文件,我仍然看到这个错误.

因此,我想问一下这个引用存储的位置,因为它不能是packages.config(因为我删除了它们).

谢谢.

根据请求,这是有问题的.csproj文件的内容:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\packages\OpenCvSharp3-AnyCPU.3.3.1.20171117\build\OpenCvSharp3-AnyCPU.props" Condition="Exists('..\packages\OpenCvSharp3-AnyCPU.3.3.1.20171117\build\OpenCvSharp3-AnyCPU.props')" />
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{10F276C8-F8C8-43FB-90F3-B3F1F0B74A2C}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <RootNamespace>Bootcamp.CompVis.Webinar</RootNamespace>
    <AssemblyName>webinar</AssemblyName>
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <NuGetPackageImportStamp>
    </NuGetPackageImportStamp>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>x64</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel> …
Run Code Online (Sandbox Code Playgroud)

c# nuget

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