我正在使用Resharper 4.5和Visual Studio 2008以及MBUnit测试,使用ReSharpher运行测试似乎有些奇怪.
在侧面,每个测试方法旁边都有图标,其中包含Run和Debug选项.当我选择Run它时,只显示单次测试的结果.但是我注意到测试需要相当长的时间才能运行.
当我运行Sql Server探查器并开始逐步执行代码时,我意识到它不仅运行所选的测试,而且还运行了类中的每一个.是否有任何理由让它看起来像只运行一个单元测试而实际运行它们?
当我只关心一个集成测试时,它会等待所有集成测试的痛苦,有没有办法改变它?
我在WPF应用程序的单独dll中有一个BaseSkin和多个UserSkins.
根据使用应用程序的用户,基础外观和其中一个用户外观将合并到资源字典中并加载以供应用程序使用.
我的目标是能够在BaseSkin文件中指定样式,然后在特定的UserSkin文件上能够覆盖它,更改我需要的任何属性.
我知道我可以通过使用这样的BasedOn属性来实现这一点:
<Style x:Key="ButtonBg" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Green"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
<Style x:Key="CustomButtonBg" TargetType="{x:Type Button}" BasedOn="{StaticResource ButtonBg}">
<Setter Property="Background" Value="Blue"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
问题是现在元素必须具有StyleButtonBg样式,实际上可能无法实现.有没有办法让两个样式使用相同的键(ButtonBg),并且当它们合并时,应用程序在User用户中查找名为ButtonBg的样式,如果不存在,请使用base中的样式?
我想如果我可以将BasedOn属性中的程序集名称指向BaseSkin文件,当我给它们相同的密钥时,我可以避免命名错误,但我找不到任何方法来做到这一点.其他选项只是强制执行每个样式,即使没有任何变化,或者在皮肤中以编程方式检查,但这些是最后的度假胜地.
我正在寻找一个寻找内存泄漏的WPF应用程序(使用ANTS Memory Profiler 5.1),我不断看到一些页面和控件占用内存.
所以我转到对象保留图并看看是什么让它们保持不变,我会继续看到每个页面:
对象保留图http://img683.imageshack.us/img683/3013/ants.jpg
问题是,我在每个页面上都将KeepAlive设置为false,并且我认为用户控件上不存在这样的属性.
谁能告诉我我应该找什么?这甚至是内存泄漏还是WPF应用程序的正常行为?
对此存储过程的调用之上是对另一个存储过程的另一个调用.@NewIdentifier
如果需要,第一个过程将分配一些东西,否则我需要使用默认值SaleId
.
exec myStoredProc @SaleId = ISNULL(@NewIdentifier, @SaleId)
Run Code Online (Sandbox Code Playgroud)
如果我这样做,它的工作原理
declare @Id int
set @Id = ISNULL(@NewIdentifier, @SaleId)
exec myStoredProc @SaleId = @Id
Run Code Online (Sandbox Code Playgroud)
是否可以ISNULL
在分配存储过程参数时使用?我不确定这种语法有什么问题.
能否请您解释以下情况的原因.
今天我编写了代码(只更改了变量名称):
private void Foo()
{
int firstInteger, secondInteger;
const string firstStringValue = "1", secondStringValue = "2";
if (!string.IsNullOrWhiteSpace(firstStringValue) && int.TryParse(firstStringValue, out firstInteger) &&
!string.IsNullOrWhiteSpace(secondStringValue) && int.TryParse(secondStringValue, out secondInteger))
{
// Using firstInteger and secondInteger here
firstInteger++;
secondInteger++;
}
}
Run Code Online (Sandbox Code Playgroud)
一切都很好,直到我决定将if条件移动到变量:
private void Foo()
{
int firstInteger, secondInteger;
const string firstStringValue = "1", secondStringValue = "2";
bool firstIntegerAndSecondIntegerAreSpecified =
!string.IsNullOrWhiteSpace(firstStringValue) && int.TryParse(firstStringValue, out firstInteger) &&
!string.IsNullOrWhiteSpace(secondStringValue) && int.TryParse(secondStringValue, out secondInteger);
if (firstIntegerAndSecondIntegerAreSpecified)
{
// Use firstInteger and secondInteger …
Run Code Online (Sandbox Code Playgroud) 我不想完全禁用警告,就像它在Assert语句中一样.
例如,如果我有以下两行
var someObject = GetObject();
Assert.IsNotNull(someObject, "someObject should not be null");
Assert.AreEqual(expectedValue, someObject.SomeProperty);
Run Code Online (Sandbox Code Playgroud)
我将在第二行上获得可能的空引用警告someObject.SomeProperty
.是否可以在某个通话中禁用警告,例如Assert.AreEqual
?
由于这是很多单元测试的问题,我不想用ReSharper禁用代码乱丢测试.
现在,我能想到的唯一选择就是改变每一个Assert.IsNotNull
电话
var someObject = GetObject();
if(someObject == null)
{
Assert.Fail("someObject is null");
return;
}
Run Code Online (Sandbox Code Playgroud)
虽然这种似乎打败Assert.IsNotNull
了首先拥有的目的.只是想知道是否有更好的方法.
我想从VS 2008/2010导入/导出我用于导出(xml格式)的断点,但无法从VS2013加载它.
我记得一旦我升级到VS2013并从VS2008环境转换为VS2013解决方案,断点工作正常.我想我可以在VS2013中保存一次,并且一旦我意外删除它们就试着加载它.不知怎的,我收到错误"无法导入断点".即使我添加断点,并尝试导出它们但在小弹出窗口中出现错误"无法导出断点".如果您有任何解决方法或解决方案,您会指导吗??
我有一个方法(有时)以格式"dddd MMMM dd"
(星期一04年1月)收集需要解析为DateTime 的字符串.我有时说,因为它也可能被传入"Today"
或"Tomorrow"
作为价值.
处理这个的代码很简单:
if (string.Compare(date, "Today", true) == 0)
_selectedDate = DateTime.Today;
else if (string.Compare(date, "Tomorrow", true) == 0)
_selectedDate = DateTime.Today.AddDays(1);
else
_selectedDate = DateTime.Parse(date);
Run Code Online (Sandbox Code Playgroud)
这一直持续到12月中旬.你们中的一些人可能已经发现了什么问题.
这将在新年的任何日期失败并出现错误:
"字符串未被识别为有效的DateTime,因为星期几不正确."
它正在通过"Monday January 04"
,这是2010年的有效日期,但不是在2009年.
所以我的问题是:有没有办法设定今年或明年的年份?现在,作为一个快速和肮脏的修复,我有这个:
if (!DateTime.TryParseExact(date, "dddd MMMM dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out _selectedDate))
if (!DateTime.TryParseExact(date + " " + (DateTime.Now.Year + 1), "dddd MMMM dd yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out _selectedDate))
throw new FormatException("That date is not valid.");
Run Code Online (Sandbox Code Playgroud)
所以它将尝试使用当前年份解析它,如果它不成功,它将在下一年再次尝试.如果它在那之后失败,它只会假设它是一个无效的日期,因为我只需要提前1年担心,但如果有人有更灵活的解决方案,我会很感激.(注意,我不需要担心验证传入的日期,它对当前或下一年有效).
我不确定我WebImage
是否正确使用该课程.
我有一个控制器从数据库中提取照片和一些相关信息(评论,上传日期,文件名).我想返回包含此信息的部分视图,并显示图像以及额外信息.
所以我从字节数组创建了一个新的WebImage,但是如何显示呢?
根据这篇文章,它应该很简单
您需要使用Razor语法并创建一个包含图像的变量:
@{ var myImage = WebImage("/Content/myImage.jpg") // Work with the image… }
然后,为了在页面中加载图像,您必须在HTML
<img/>
标记内显示包含图像的变量:
<img src="@myImage"/>
除了不起作用,它只是输出<img src="System.Web.Helpers.WebImage">
和调用.Write
没有帮助.
有没有办法做到这一点,还是我需要将我的动作分成两个不同的动作,一个是返回照片信息,另一个是返回照片本身?
c# ×6
mbunit ×2
unit-testing ×2
wpf ×2
.net ×1
breakpoints ×1
datetime ×1
git ×1
github ×1
isnull ×1
memory-leaks ×1
parsing ×1
razor ×1
resharper ×1
sql-server ×1
syntax ×1
webimage ×1
xaml ×1