小编War*_* P的帖子

如何对ASP.NET Core控制器或模型对象进行单元测试?

我试图在Visual Studio 2015中使用ASP.NET Core MVC(预览期间的ASP.NET 5,现在称为ASP.Net Core)应用程序在单元测试下获得一些控制器,模型和存储库(数据访问)C#类.

我有以下结构:

   Solution
       |
      src
       | 
       |-- ITConsole       <- main app (ASP.NET MVC, DNX 4.5.1)
       | 
       `-- ITConsoleTests  <- What kind of project should this be?
Run Code Online (Sandbox Code Playgroud)

MainApp正在使用DNX 4.5.1,但似乎如果我创建一个标准的nUnit Unit测试应用程序,它只能用作经典的.NET Framework类库,目标是.NET Framework 4.5.2,而不是Web类库.可以使用我的主应用程序.

因此,为了防止它可能作为经典的.NET框架Microsoft单元测试框架项目(.net程序集)工作,我尝试手动查找和添加引用(通过添加引用和浏览)来获取要解析的.NET依赖项.我知道.NET程序集引用很遗憾是不可传递的.因此,如果UnitTest.dll具有对MainApp.dll的引用,并且MainApp.dll依赖于ASP.NET MVC以及它依赖的所有其他内容,那么我必须自己执行此操作.这就是我想要做的.我C:\dev\Demo\ITConsole\artifacts\bin\ITConsole\Debug\dnx451\ITConsole.dll在单元测试项目中添加了一个引用,所以我可以开始编译代码了.单元测试类编译但它们不运行,可能是因为尝试添加对ASP.NET的引用.

现在,即使我添加了对Common.Logging.Core和Common.Logging的引用,当我在Test explorer上单击"Run All"时,我收到此错误:

Test Name:  TestStudyLogReadDocument
Test FullName:  ITConsoleTests.ITConsoleTestStudyLog.TestStudyLogReadDocument
Test Source:    C:\dev\Demo\ITConsole\ITConsoleTests\ITConsoleTestStudyLog.cs : line 52
Test Outcome:   Failed
Test Duration:  0:00:00.0712058

Result StackTrace:  
at Couchbase.Configuration.Client.ClientConfiguration..ctor()
   at ITConsole.Repository.StudyLogRepository..ctor() in C:\dev\Demo\ITConsole\src\ITConsole\Repository\StudyLogRepository.cs:line 39
   at ITConsoleTests.ITConsoleTestStudyLog.SetupDb() in C:\dev\Demo\ITConsole\ITConsoleTests\ITConsoleTestStudyLog.cs:line 30
   at ITConsoleTests.ITConsoleTestStudyLog.TestStudyLogReadDocument() in …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asp.net-core-mvc visual-studio-2015

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

如何编写TDBCtrlGrid VCL样式自定义类?

这里有很多关于XE2 VCL样式和按钮,面板,编辑等自定义颜色和VCL样式的问题.尽管我希望现有问题涵盖它,但它们并没有...因此DB控制网格似乎是另一个特殊情况.

  1. 在DB Control Grid VCL源代码中,它会注册一个样式挂钩: TCustomStyleEngine.RegisterStyleHook( TDBCtrlGrid, TScrollingStyleHook);

  2. 但是,如果您想编写自己的DB Control Grid VCL样式挂钩,那么这不是您想要的.如果你这样做,你可以将整个控件绘制成一个非常大的滚动条.

在此输入图像描述

  1. 那么如何自定义数据库控制网格?完全禁用主题后,似乎仍然不允许自定义绘制活动行.因此,我认为必须编写自定义子类并覆盖Paint方法,并为此目的编写VCL样式钩子类.

  2. 似乎应该主要使用常规所有者绘制事件OnPaintPanel进行自定义,并且添加该事件(如果没有)修复了我看到的最大的VCL样式故障,TDBCtrlGrid即它不会使用SelectedColor只是用灰色或其他任何基色来绘制所有东西.如果有人可以确认,或者告诉我,我们将不胜感激.

delphi delphi-xe2 vcl-styles

19
推荐指数
0
解决办法
1234
查看次数

如何在IntelliJ IDEA社区版中创建新的Swing应用程序?

我使用"创建新项目向导"创建了一个新项目,选择"从头开始创建项目",但它完全是空的(根本没有java类,所以我在空项目中手动创建了一个新的swing表单).

在我使用的许多其他IDE中,有一种方法可以单击一次,并获得一个新的"新Gui项目",我通常期望它在"文件 - >新项目"向导中或类似的东西.

IntelliJ IDEA IDE中有一个新的项目向导,但它似乎只能创建一个空白项目,然后我可以手动添加一个表单.所以我做到了.但是,它缺少您期望它拥有的任何常用Java代码,打开该表单并将其显示为应用程序.

我试图了解IntelliJ IDEA的特性和功能,它看起来很强大,作为一个非常快速和高效的编辑器和调试器和构建系统GUI包装围绕ANT构建系统,但我想知道是否有更多的"RAD"功能,我只是忽略了.我已经做了一些谷歌搜索和阅读文档,但我没有发现使用IntelliJ IDEA在Java中构建GUI应用程序.

我目前卡住的地方是当我尝试使用空表单构建并运行我的空项目时,我进入某种"运行"目标配置屏幕,我尝试单击[+]图标,然后添加"MyForm01"是我创建的空转形式,它在对话框中说"MyForm01是不可接受的".我知道足够的java知道IDE不会自动生成基本的"GUI应用程序框架代码".我可以去互联网上复制和粘贴一些东西,但我感兴趣的是知道该工具是否可以自动用于构建GUI,工作流程与其他RAD式GUI构建工具一样简单,包括NetBeans,我最熟悉的java工具,或Delphi,这是我的主要日常工具,它是基于Pascal而不是Java.

java intellij-idea

19
推荐指数
4
解决办法
7万
查看次数

是否有一个Boyer-Moore字符串搜索和快速搜索和替换功能以及Delphi 2010 String(UnicodeString)的快速字符串计数?

我需要三个快速大字符串函数:快速搜索,快速搜索和替换,以及字符串中子字符串的快速计数.

我在C++和Python中遇到过Boyer-Moore字符串搜索,但是用于实现快速搜索和替换的唯一Delphi Boyer-Moore算法是由Peter Morris(前身为DroopyEyes软件)及其网站的FastStrings的一部分.和电子邮件不再有效.

我已经将FastStrings移植到Delphi 2009/2010的AnsiStrings中,其中一个字节等于一个AnsiChar,但是使它们也可以在Delphi 2010中使用String(UnicodeString)显得非常重要.

使用这个Boyer-Moore算法,应该可以轻松地进行不区分大小写的搜索,以及不区分大小写的搜索和替换,没有任何临时字符串(使用StrUpper等),并且不调用比Boyer更慢的Pos()需要在重复搜索同一文本时进行摩尔搜索.

(编辑:我有一个部分解决方案,写作这个问题的答案,几乎100%完成,它甚至有一个快速的字符串替换功能.我相信它必须有bug,特别是认为,因为它假装是Unicode由于未实现的Unicode承诺,它必须存在故障.)

(编辑2:有趣和意外的结果;堆栈上的unicode代码点表的大堆栈大小 - 下面的代码中的SkipTable严重阻碍了你可以在unicode字符串boyer中完成的双赢优化量 - 摩尔字符串搜索.感谢Florent Ouchet指出我应该立即注意到的内容.)

delphi algorithm replace delphi-2010 boyer-moore

18
推荐指数
1
解决办法
5620
查看次数

用于在所有Win32程序员的Windows Aero Glass(DWM,GDI,GDI +)上绘图的文档和API示例

我正在寻找学习使用Win32/GDI API的好资源,或者使用Win32 API直接绘制和绘制到玻璃表格的任何东西.

当我使用Delphi时,我将其标记为Delphi或Visual C++.您可以找到任何代码示例和文章,我们将不胜感激.MSDN文章似乎没有写到这一点.

作为一个目标,让我们想象你想要:(a)重现谷歌Chrome的功能(标签作为玻璃框架的一部分)(b)重现MS Office 2010的功能(保存在MFC上的玻璃框架上的按钮VS 2010,作为"快速访问工具栏"(见下图).

我没有使用MFC,但如果检查MFC源是一个很好的信息来源,我很想知道在MFC源或BCG原始源(我有两者)中的哪些地方实现了快速访问工具栏渲染/绘制代码.

替代文字

更新:以下答案之一的相关neato链接显示NC(非客户端)Paint消息,以及如何在玻璃框架上绘制时处理它,以及此处的MSDN文章.

windows delphi visual-c++ windows-7 aero-glass

18
推荐指数
3
解决办法
5938
查看次数

在Windows Vista和Windows 7中对DPI虚拟化和DPI感知应用程序进行故障诊断

我有一个问题,在所有系统上,应用程序(用Delphi编写)在默认的96 DPI设置下表现正常,但在不同系统上的"150%文本大小"(内部144 dpi)设置下表现不一致.似乎在某些系统上,我的应用程序的某些文本/字体部分正在被拉伸,而在其他系统上,它们不是.我原以为我的应用程序,在某个版本的Windows(Win7)上,在某个DPI下,应该表现得一样.

我的应用程序将使Windows知道它不需要DPI虚拟化功能,或者它不需要.我明白了.我不明白的是DPI更改如何在两台机器上产生不同的外观,两台机器都以144 dpi运行Windows 7,以相同的固定大小显示相同的字体和形式.

我需要在Windows(注册表等)中检查DPI虚拟化中是否涉及一些与配置相关的元素?否则,您如何排除故障并了解是否在客户端窗口上进行了DPI虚拟化?

在Delphi中,如果不想扩展,必须将TForm.Scaled属性设置为false.但我不明白的是,当主窗体的Scaled属性为真时,我无法总是预测结果.

在我的应用程序中,最令我困惑的是,我有一个控件只在我的大型实际应用程序中行为不端,但在我试图调试控件的独立应用程序中没有出错.为了理解独立应用程序中的控件行为,我被迫制作了一个演示应用程序,我通过清单文件强制进行DPI感知.然后我可以重现控制绘图故障,虽然是以不同的形式.

这是我在我的演示应用程序中使用的清单文件,它暴露了我的控件在处理windows中的高dpi设置时遇到的问题.但是,我发现一件奇怪的事情是应用程序是可能的

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
    <asmv3:windowsSettings
         xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
  <assemblyIdentity version="14.0.3615.26342" processorArchitecture="*"            
   name="TestProject" type="win32"></assemblyIdentity>
  <description>High DPI Controls Test App</description>
</assembly>
Run Code Online (Sandbox Code Playgroud)

这是我在应用程序中禁用DPI虚拟化时,我的应用程序中的控件混乱的大约30个地方之一的示例.通过关闭我的表单中的Scaled属性来解决这个特殊的故障.但在其他地方,TForm.Scaled = false导致问题,而在某些形式,它修复它:

具有非DPI虚拟化应用清单的DPI Glitch示例,但主要形式是Scaled

更新:事实证明我的一些控件使用GDI +并且GDI +上下文中的字体行为与普通GDI上下文中的字体行为不同,至少对于使用GDI +的某些第三方控件而言.这是头痛的主要原因.其次,对于VCL中的DPI感知,存在不稳定的测试覆盖率和不明确的要求.一些VCL控件基于MS公共控件,虽然公平地说底层公共控件在高DPI情况下可能正常工作,但并不是所有的VCL控件包装都能保证正常工作.因此,在所有控件中查看高DPI感知应用程序,以及所有可用Windows 7主题中的正确行为:

  1. 96dpi的航空玻璃(大多数现代硬件上的默认Win7外观)
  2. 基本主题(航空玻璃关闭)但启用了XP主题
  3. 经典的win2000外观,玻璃关闭,以及XP级主题,
  4. 高对比度白色
  5. 高对比度黑色
  6. 各种96-DPI以外的设置

..并且列表继续.作为应用程序开发人员,你有一个相当沉重的负担.无论您是delphi用户还是使用VCL,或者您是MFC/ATL C++开发人员,在我看来,支持所有各种奇特的Windows模式是一种几乎无法承受的负担.所以大多数人都不打扰.我对吗?

delphi dpi highdpi windows-vista windows-7

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

我可以在现代英特尔酷睿CPU上测量分支预测故障吗?

这个问题及其答案最近被标记为史诗答案,这让我感到奇怪; 我可以根据CPU分支预测失败来衡量Windows中正在运行的应用程序的性能吗?我知道存在一些静态分析工具,这可能有助于在分支预测情况下优化代码以获得良好性能,并且手动技术可以通过简单地进行更改和重新测试来提供帮助,但我正在寻找一些可以自动化的机制.报告在一段时间内,当Windows应用程序运行时,分支预测失败的总数,我希望Visual C++的一些Profiler工具可以帮助我.

为了这个问题,有问题的应用程序可以使用本机编译器(如Visual C++ for Windows)构建,也可以使用其他本机编译器构建,例如GCC,FreePascal,Delphi或TurboAssembler.可执行文件可能根本没有任何调试信息.我想知道我是否可以检测并计算分支预测失败,可能是通过某些Windows服务(如WMI)读取内部CPU信息,或者可能完全在运行Windows的虚拟化环境中运行,例如使用VirtualBox,然后完全运行虚拟化Windows环境与我的测试应用程序,VirtualBox内部,并进行虚拟CPU的运行时分析.或者其他一些我不知道的技术,因此这个问题.

是的,我用Google搜索.唯一看起来很有希望的是来自AMD的PDF.我们提到了一些非常接近我想做的事情,但似乎是为没有任何操作系统的人在原始评估硬件平台上编写的:

5.1.分行.适用性.条件分支错误预测可能是具有大量决策逻辑的代码中的重要问题.

当选择真或假路径的可能性是随机的或接近50-50分裂时,条件分支可能被错误预测.分支预测硬件不能"学习"模式,并且不能正确预测分支.采集.收集此表中的事件以测量分支预测性能:

分支使用以下公式计算分支的采用率和每个分支的指令数的比率:分支采用率= Taken_branches/Ret_instructions分支采用率= Taken_branches /分支
每个分支的指令= Ret_instructions /分支

更新:我想我可以说我正在寻找一种方法来读取英特尔酷睿i7 PMU模块或其他CPU的等效功能.看起来英特尔VTUNE(来自Adrian的评论)非常接近我的要求.

c++ windows optimization visual-c++ branch-prediction

17
推荐指数
1
解决办法
2327
查看次数

如何从nuget提示符执行Entity Framework Core项目并在Visual Studio 2015中添加迁移?

在Visual Studio 2015中,我创建了一个ASP.net Core项目(以前称为ASP.NET 5).该项目的模板创建了一个用于持久性的MS SQL localdb,以及实体框架和一些身份验证表.

在我弄清楚如何浏览为此项目创建的localdb数据库之后,我决定尝试修改模型对象并尝试使用ASP.NET MVC Web站点模板示例应用程序进行代码优先迁移.它使用EF为localdb提供登录持久性.我试过用了

演示应用程序已包含Migrations文件夹.但是,如果您add-migration SomeNameHere在Package Manager控制台中键入内容,或者enable-migrations似乎无法使用示例项目使用ER Migrations.

我在IdentityModel.cs单元中添加了一个字符串属性,我尝试手动将其手动添加到0000...IdentitySchema.cs文件中,但显然我不知道如何正确地执行此操作,因为当我运行应用程序时,我遇到了一些错误,如下所示.我相信我需要基本上使用Entity Framework代码优先工具生成一些骨架.cs单元,它将进入Migrations文件夹.

人们建议现在做的通常做法是:

  • 确保您以管理员身份运行.(完成)
  • 确保卸载实体框架并将其重新安装到您希望其处于活动状态的解决方案中(完成)

从包管理器控制台重新安装看起来像这样:

PM> Uninstall-Package EntityFramework
Uninstalling NuGet package EntityFramework.7.0.0-beta4.
Successfully uninstalled 'EntityFramework.7.0.0-beta4' from WebApplicationDNX.
PM> Install-Package EntityFramework -IncludePrerelease
Installing NuGet package EntityFramework.7.0.0-beta4.
Successfully installed 'EntityFramework.7.0.0-beta4' to WebApplicationDNX.
PM> 
Run Code Online (Sandbox Code Playgroud)

在这里,我相信我犯了一个错误,因为我正在尝试运行像add-migration这样的命令而我无法做到.事实证明,我从未支持尝试这样的事情:

PM> add-migration DummyMigrate
add-migration : The term 'add-migration' is not recognized as the name of a cmdlet, function, script file, or operable program. .... 
PM> …
Run Code Online (Sandbox Code Playgroud)

powershell entity-framework visual-studio-2015 dnx asp.net-core

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

从windows生成gitlab ssh密钥

我已经尝试按照本指南生成一个ssh密钥以使用gitlab.

在我知道是否应该生成密钥之前,我必须检查是否已经存在这样的密钥:

type %userprofile%\.ssh\id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

如果它这样说,那么我必须生成密钥:

the system cannot find the path specified
Run Code Online (Sandbox Code Playgroud)

你下一步怎么做?因为指南没有说什么,以防这是我得到的消息.

编辑:我试过了

ssh-keygen -t rsa -C "email@example.com"
Run Code Online (Sandbox Code Playgroud)

我明白了

'ssh-keygen' is not recognized as an internal or external command, 
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

编辑2:我在窗户上.

ssh cmd gitlab

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

Delphi中的Google Chrome风格标签

我正在尝试在Windows 7中的Delphi应用程序中实现Google Chrome样式选项卡.

这个元素是:

  • 标签可以像谷歌浏览器本身一样延伸到非客户区域.
  • 启用玻璃时,在Vista和Windows 7上正确绘制
  • 标签工作就像谷歌浏览器一样,看起来像谷歌铬,玻璃.

在此输入图像描述

我发现我必须克服的挑战是:

  • 如何将控件(VCL控件)扩展到非客户端区域?(执行此操作的控件的一个很好的示例是VCL源中包含的Ribbon控件,但我没有看到任何其他人这样做,并且需要一些邪恶的黑客才能使功能区运行)
  • 如何在玻璃上正确绘制位图?(DWM API).一个相关的问题已经回答了这方面,在这里,我也问过这个问题.

delphi dwm tabbed-interface aero-glass

16
推荐指数
3
解决办法
6408
查看次数