我试图在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) 这里有很多关于XE2 VCL样式和按钮,面板,编辑等自定义颜色和VCL样式的问题.尽管我希望现有问题涵盖它,但它们并没有...因此DB控制网格似乎是另一个特殊情况.
在DB Control Grid VCL源代码中,它会注册一个样式挂钩: TCustomStyleEngine.RegisterStyleHook( TDBCtrlGrid, TScrollingStyleHook);
但是,如果您想编写自己的DB Control Grid VCL样式挂钩,那么这不是您想要的.如果你这样做,你可以将整个控件绘制成一个非常大的滚动条.

那么如何自定义数据库控制网格?完全禁用主题后,似乎仍然不允许自定义绘制活动行.因此,我认为必须编写自定义子类并覆盖Paint方法,并为此目的编写VCL样式钩子类.
似乎应该主要使用常规所有者绘制事件OnPaintPanel进行自定义,并且添加该事件(如果没有)修复了我看到的最大的VCL样式故障,TDBCtrlGrid即它不会使用SelectedColor只是用灰色或其他任何基色来绘制所有东西.如果有人可以确认,或者告诉我,我们将不胜感激.
我使用"创建新项目向导"创建了一个新项目,选择"从头开始创建项目",但它完全是空的(根本没有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.
我需要三个快速大字符串函数:快速搜索,快速搜索和替换,以及字符串中子字符串的快速计数.
我在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指出我应该立即注意到的内容.)
我正在寻找学习使用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文章.
我有一个问题,在所有系统上,应用程序(用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导致问题,而在某些形式,它修复它:

更新:事实证明我的一些控件使用GDI +并且GDI +上下文中的字体行为与普通GDI上下文中的字体行为不同,至少对于使用GDI +的某些第三方控件而言.这是头痛的主要原因.其次,对于VCL中的DPI感知,存在不稳定的测试覆盖率和不明确的要求.一些VCL控件基于MS公共控件,虽然公平地说底层公共控件在高DPI情况下可能正常工作,但并不是所有的VCL控件包装都能保证正常工作.因此,在所有控件中查看高DPI感知应用程序,以及所有可用Windows 7主题中的正确行为:
..并且列表继续.作为应用程序开发人员,你有一个相当沉重的负担.无论您是delphi用户还是使用VCL,或者您是MFC/ATL C++开发人员,在我看来,支持所有各种奇特的Windows模式是一种几乎无法承受的负担.所以大多数人都不打扰.我对吗?
这个问题及其答案最近被标记为史诗答案,这让我感到奇怪; 我可以根据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的评论)非常接近我的要求.
在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
我已经尝试按照本指南生成一个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:我在窗户上.
我正在尝试在Windows 7中的Delphi应用程序中实现Google Chrome样式选项卡.
这个元素是:

我发现我必须克服的挑战是:
delphi ×5
aero-glass ×2
visual-c++ ×2
windows ×2
windows-7 ×2
algorithm ×1
asp.net-core ×1
asp.net-mvc ×1
boyer-moore ×1
c# ×1
c++ ×1
cmd ×1
delphi-2010 ×1
delphi-xe2 ×1
dnx ×1
dpi ×1
dwm ×1
gitlab ×1
highdpi ×1
java ×1
optimization ×1
powershell ×1
replace ×1
ssh ×1
vcl-styles ×1