我需要编写一个测试来验证我的代码可以处理AccessViolationException(或任何其他WIN32损坏状态异常 - CSE),它通常通过调用第三方库来处理不安全的上下文.这应该都是使用C#on .net 4.0完成的.
我发现了这个相关的问题如何处理AccessViolationException和这篇相关的文章http://dotnetslackers.com/articles/net/All-about-Corrupted-State-Exceptions-in-NET4.aspx,它解释了如何捕获这些CSE和他们的背景.
所以我想在测试中激发一个WIN32 CSE,以确保在我的应用程序中正确处理.就像是:
一些要测试的示例类:
public class MyExceptionHandler
{
[HandleProcessCorruptedStateExceptions]
public void HandleCorruptedStateException()
{
try
{
//Force genuine unsafe AccessViolationException
//not just a throw new AccessViolationException
}
catch(Exception e)
{
//Log/cleanup/other
}
}
public void DoesNotHandleCorruptedStateException()
{
try
{
//Force genuine unsafe AccessViolationException
//not just a throw new AccessViolationException
}
catch (Exception e)
{
//Log/cleanup/other
}
}
}
Run Code Online (Sandbox Code Playgroud)
一个测试:
class MyTest
{
[Test]
public void ShouldVerifyThatAnAccessViolationExceptionIsHandledCorrectly()
{
var handler = new MyExceptionHandler(); …Run Code Online (Sandbox Code Playgroud) 我正在做一些自动化,并在将一些10-15个旧的,古怪的脚本重写为一个单一且简单的单元,它可以:
我这样做使用Microsoft.SqlServer.Dac我可以导出/导入dac包.
它工作得很好:),但在完成所有我的TDD和测试之后,现在是真实的时间了,结果我完全错过了我的工作中有2个域.
这意味着当我在开发环境中导入dacpac时出现错误,因为我们的2个域没有完全双向信任,当然数据库也有来自两个域的用户.特别是生产域用户.我可以看到3个可行的解决方案
我已经阅读了文档(当然这是模糊的),试图找到一组可以实现2)或3)的选项.我已经测试了很多组合,但没有一个可以工作.dac pac导入不断尝试创建用户并失败,因为生成用户无法在开发环境中进行验证.
我正在使用Deploy和Extract导出/导入.可以在这里找到不同的选项:
没有组合我找到了作品,我甚至阅读过帖子,暗示它是DacPac中的一个错误.但我不确定.我现在正在研究的最后一个选项是使用GenerateScript方法,希望能够强制排除用户/登录,但我担心它也无法正常工作.见(http://technet.microsoft.com/en-us/library/hh753526.aspx).
问题: 如何在导出或导入中从我的dacpac中排除用户/登录?
UPDATE
当前提取设置:
IgnoreUserLoginMappings = true,
VerifyExtraction = false,
Run Code Online (Sandbox Code Playgroud)
当前部署设置:
CreateNewDatabase = true,
DeployDatabaseInSingleUserMode = true,
DisableAndReenableDdlTriggers = true,
IgnoreUserSettingsObjects = true,
Run Code Online (Sandbox Code Playgroud)
更新
到目前为止,一切都指向一个丑陋的解决方
I can generate a deploy script using DacServices.
Then i can parse the script (Remove logins etc).
Then write the result to a file.
And then call SQLCMD in …Run Code Online (Sandbox Code Playgroud) 自动生成的PrecompiledApp.config让我有些头疼.我自动部署旧网站,50%的时间部署我得到这个错误:
System.IO.IOException: The process cannot access the file '\\web.prod.local\c$\Sites\Website\PrecompiledApp.config' because it is being used by another process.
Run Code Online (Sandbox Code Playgroud)
内容:
<precompiledApp version="2" updatable="true"/>
Run Code Online (Sandbox Code Playgroud)
据我所知,网站使用一些卷影复制功能,允许更新网站"运行时",如app.config等.但这1文件似乎是一个例外.
除了在部署时停止网站,有人可以建议一个解决方法吗?
亲切的问候
我的情况是这样的:
多个线程必须同时写入同一个集合(add和addrange).物品的顺序不是问题.当所有线程都完成(加入)并且我回到我的主线程上时,我需要以foreach样式快速读取所有收集的数据,因为所有线程都完成后不需要实际锁定.
在"过去的日子"中,我可能会在List上使用读写器锁,但是对于新的并发集合,我想知道是否有更好的选择.我只是无法弄清楚哪些并发集合似乎假设读者也在并发线程上.
我在点击具有特定ID的行时试图隐藏/显示行的子集.
通过大量搜索网络和大量尝试,我得到了下面的代码.
唯一的问题是这个代码由于某种原因只隐藏/显示第一组行.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Test</title>
<script src="http://code.jquery.com/jquery-1.5.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function()
{
$('#rowToClick').click(function ()
{
$(this).nextAll('tr').each( function()
{
if ($(this).is('#rowToClick'))
{
return false;
}
$(this).toggle();
});
});
});
</script>
</head>
<body>
<table>
<tr id="rowToClick"><td>ClickMe</td></tr>
<tr id="Tr1"><td>Toggled</td></tr>
<tr id="Tr2"><td>Toggled</td></tr>
<tr id="Tr3"><td>Toggled</td></tr>
<tr id="Tr4"><td>Toggled</td></tr>
<tr id="Tr5"><td>Toggled</td></tr>
<tr id="rowToClick"><td>ClickMe</td></tr>
<tr id="Tr6"><td>Toggled</td></tr>
<tr id="Tr7"><td>Toggled</td></tr>
<tr id="Tr8"><td>Toggled</td></tr>
<tr id="Tr9"><td>Toggled</td></tr>
<tr id="Tr10"><td>Toggled</td></tr>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
任何人都有建议和/或可能重写代码?
----------更新 - 最终解决方案-----------
我最终根据Brandon的输入得到了下面的解决方案,因为我想用相同的行为做更多的嵌套,有点像可折叠的树视图.不幸的是,这意味着我必须添加一个额外的属性来跟踪状态,但我现在可以忍受,直到我找到另一种方式(例如检查下一行的可见性).
$(document).ready(function () {
toggleRows('.module','.namespace');
toggleRows('.namespace','.type'); …Run Code Online (Sandbox Code Playgroud) 我即将开始使用TC(Great product :)的标签功能,并提出一个问题:
我有1个根VCS: svn:\ someserver\MyRepo
使用标签规则: trunk =>标签
在我的所有项目中,我使用结帐规则来检查所需的项目,如下所示:
Prj1 - Conf1: +:MyPrj1/trunk => /
Prj2 - Conf1: +:MyPrj2/trunk => /
Prj3 - Conf1: +:MyPrjCollection/MySubPrj1/trunk => /
......你得到了照片
如果我在ex上的每个成功构建上设置自动标签,那么会发生什么.Prj1 - Conf1?
A.我的主干是否只是标记为MyPrj1/tags/LabelName,正如我希望的那样?
B.或者是否会标记整个根VCS(MyRepo\tags\Label)或更糟糕的东西?
谁能帮我?:)
亲切的问候加勒特
任何人都可以告诉我如何将参数添加到我的自定义C#cmdlet,这是一个Hashtable/StringDictionary,以便我可以以类似于这样的方式调用我的cmdlet:
CustomCmdlet -File $someFilePath `
-StringDictionary/HashtableParameter @{
"name1"="value1"
"name2"="value2"
"name3"="value3"
...
}
Run Code Online (Sandbox Code Playgroud)
我根本找不到任何文档/示例,这些文档/示例清楚而简单地解释了如何执行此操作,或者甚至可以用于自定义cmdlet.
我可以使用:
[Parameter(Mandatory = false, Position = 9)]
public Dictionary<string,string> FieldValues { get; set; }
[Parameter(Mandatory = false, Position = 9)]
public HashTable FieldValues { get; set; }
...
Run Code Online (Sandbox Code Playgroud)
或者是其他东西?
亲切的问候
我们在工作中处于紧张状态,我需要一些清晰度:
基本上:我们可以使用WCF读取/写入MSMQ并在我们传递的对象上获得类型安全性.
替代方案:我们可以使用像NService Bus这样的东西做同样的事情.
现在,在我的工作中,我们都非常精通WCF,但我们都不熟悉使用服务总线.
因此,有人可以帮助我使用WCF或NService Bus获得一些优点/缺点收益/损失,因为现在我认为使用WCF会更容易(只要我们不需要高级交易等)?
您认为以后从WCF更改为NService Bus有多容易?
亲切的问候
我自动部署具有此绑定的旧网站:
net.tcp 808:*
Run Code Online (Sandbox Code Playgroud)
但是,当我使用WebAdministration设置它时:
New-WebBinding -Name "site" -Procotol "net.tcp" -Port 808
Run Code Online (Sandbox Code Playgroud)
我得到这个绑定:
net.tcp *:808:
Run Code Online (Sandbox Code Playgroud)
它们是一样的吗?
是否可以更改部件:
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
Run Code Online (Sandbox Code Playgroud)
说:
# Staged:
Run Code Online (Sandbox Code Playgroud) 我是GitHub的新人,并且(错误地)在家里和工作中创建了一个帐户,因为我认为在工作中使用我的个人帐户可能存在问题,安全问题或其他问题.原来没有:).
所以我想删除我的家庭帐户(完成)并使用我在工作中创建的帐户,使其成为我的"真实"帐户.
这意味着我想将我的工作帐户重命名为我以前的家庭帐户(已删除)的名称.
所以,如果我重命名我的工作帐户:
出于某种原因(可以说明显),在尝试更改帐户名时,GitHub警告中没有提到过scenarie.
我有我的主分支并执行以下操作:
git checkout -b parentBranch
git ... (do some commits)
git checkout -b childOfParentBranch (this is while still on branch parentBranch)
git ... (do some commits)
Run Code Online (Sandbox Code Playgroud)
然后我按照这个确切的顺序合并(重要):
git checkout master
git merge childOfParentBranch --no-ff
Run Code Online (Sandbox Code Playgroud)
现在我如何做一个 git log 来查看两个分支的名称?
沿线的东西:
*
|-Merged parentBranch and childOfParentBranch
Run Code Online (Sandbox Code Playgroud)
或者:
*
|-Merged parentBranch
|-Merged childOfParentBranch
Run Code Online (Sandbox Code Playgroud)
编辑: 我添加了提交语句,因为缺少它们会导致误解。
我试图使用“git log”来显示所有合并到 master 的分支名称。即使只有 childOfParentBranch 合并到 master 中,也包括 parentBranch 的名称。如果我使用 gitk 进行检查,这些值很清楚,但我需要它们与“git log”一起进行一些自动化。
亲切的问候基督徒
c# ×5
git ×2
powershell ×2
.net ×1
account ×1
asp.net ×1
c#-4.0 ×1
cmdlet ×1
concurrency ×1
cross-domain ×1
dacpac ×1
database ×1
expand ×1
git-commit ×1
githooks ×1
github ×1
hashtable ×1
html-table ×1
iis ×1
jquery ×1
label ×1
logging ×1
nservicebus ×1
parameters ×1
rename ×1
row ×1
sql-server ×1
svn ×1
tags ×1
teamcity-5.0 ×1
unsafe ×1
wcf ×1