在安装和使用Visual Studio 2010之后,我看到了一些较新的文件类型(至少有C++项目...不知道其他类型)与2008年相比.例如.sdf,.opensdf,我猜是使用存储在SQL Server Compact文件中的Intellisense信息替换ncb文件?我还注意到生成了.log文件,它们似乎是构建日志.
鉴于此,添加到我的全局忽略模式可以安全吗?蝙蝠,我假设.sdf,.opensdf,但还有什么?
我想将一个表脚本编写为Alter到一个新的查询编辑器窗口.但是此选项已禁用.我怎样才能做到这一点?
我试图将我的TODO注释显示在Visual Studio 2010中的C++项目的任务列表中,但它们没有.我看了这个,但除了TODO评论需要在当前打开的文件中之外,不要看任何警告.例如,创建一个新的Win32控制台应用程序放置:
// TODO: reference additional headers your program requires here
Run Code Online (Sandbox Code Playgroud)
在一个新文件中,stdafx.h.但是,任务列表中没有任何内容.
我从任务列表的下拉列表中选择了"注释",但它始终为空.而这不是这个问题 ; 我可以打开文件,在代码编辑器中查看TODO注释,不显示任务.这对于C#项目来说不是问题,因为TODO评论显示为在这些项目中设计的; 这似乎是C++项目特有的问题.
我还能检查什么?
我有一个简单的两个聚合根和一个常规实体的检查域.
Tenant,UserGroup以及User在这个特定样本中的位置Tenant和User弥补两个AggregateRoots.
当从UI /服务层接收到命令时,它到达操作只写域的命令处理程序.
您可以说User根本不应该是AggregateRoot,但由于它将被其他人引用,因此它不能是常规实体.(是?)
这两个AggregateRoot需要进行通信.A User不能在不属于a的情况下创建,a UserGroup是有界上下文中的实体Tenant.据推测,我们可以通过构造函数创建一个用户,因为它是一个简单的约束.User.Create(TenantId, UserGroupId)
它生成一个DomainEventwith Date,AggregateVersion和AggregateId(用户).现在我们来到模糊的部分.
打开将此事件提交到商店,此事件将被广播到总线(内存,无论如何).这一点,该点域的事件处理程序,类似命令处理,抓创建的用户,并通知/操纵Tenant的UserGroup添加UserId?
我对解决这个问题的想法是否会走向完全错误的方向?
我是一个完整的LINQ新手,所以我不知道我的LINQ是否不正确我需要做什么或者我的性能期望是否太高.
我有一个对象的SortedList,用int键入; SortedList与SortedDictionary相对,因为我将使用预先排序的数据填充集合.我的任务是找到确切的密钥,或者,如果没有确切的密钥,则找到具有下一个更高值的密钥.如果列表的搜索太高(例如,最高键为100,但搜索105),则返回null.
// The structure of this class is unimportant. Just using
// it as an illustration.
public class CX
{
public int KEY;
public DateTime DT;
}
static CX getItem(int i, SortedList<int, CX> list)
{
var items =
(from kv in list
where kv.Key >= i
select kv.Key);
if (items.Any())
{
return list[items.Min()];
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
给定50,000条记录的列表,调用getItem 500次需要大约一秒半.拨打50,000次电话需要2分钟.这种表现似乎很差.我的LINQ坏了吗?我期待太多了吗?我应该滚动自己的二元搜索功能吗?
在我的MVC应用程序中,我使用表单身份验证来验证用户,然后System.IdentityModel.Services.SessionAuthenticationModule继续会话.
虽然我还没有在这里有必要的时候,我也希望利用System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler这样应用程序将很好地住在一个Web场(由多米尼克·拜尔描述这里).
我遇到的问题是,鉴于基于machineKey的处理,我希望会话不仅可以从服务器机器到机器有效,而且还应该在应用程序重启后继续存在.但是,每当我重新启动或重建应用程序时,在浏览器中点击应用程序时,cookie显然会变为无效,我会被退回到身份验证屏幕.一旦再次验证,一切都很好,会话仍然存在.但是,下次应用程序重新启动或重建时,我不得不重新进行身份验证.
我确定这是WIF的一个方面,我没有得到,但我只是不知道从哪里转过来.我不怕延伸MachineKeySessionSecurityTokenHandler,但我想确保在我继续之前我理解这里发生了什么.我知道默认情况下SessionSecurityTokenHandler使用DPAPI结合应用程序池中的某些标识符进行加密,因此在这种情况下会发生这种情况,但这种行为MachineKeySessionSecurityTokenHandler让我感到困惑.应用程序中是否仍有一些标识符在重新启动时重新创建MachineKeySessionSecurityTokenHandler依赖?我只是错过了一个设置吗?
以下是我的web.config中的相关部分:
<configSections>
<section name="system.identityModel"
type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</configSections>
Run Code Online (Sandbox Code Playgroud)
...
<system.identityModel>
<identityConfiguration>
<securityTokenHandlers>
<remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</securityTokenHandlers>
</identityConfiguration>
</system.identityModel>
Run Code Online (Sandbox Code Playgroud)
...
<system.web>
<machineKey compatibilityMode="Framework45"
validationKey="E27893..."
decryptionKey="ABC..."
validation="SHA1" decryption="AES" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login"
timeout="10080" />
</authentication>
</system.web>
Run Code Online (Sandbox Code Playgroud)
...
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="SessionAuthenticationModule"
type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</modules> …Run Code Online (Sandbox Code Playgroud) 很久以前我注意到每当我在现有的本地git repo文件夹中创建一个解决方案时,Visual Studio就会自动创建一个.gitignore文件.大.但是,我注意到它忽略了一些应该在源代码管理中的NCrunch文件(*.ncrunchsolution和*.ncrunchproject).所以我决定深入研究它.这里的问题是我不知道它从哪里获取此默认文件.我看到它基本上是gitignore GitHub项目中的VisualStudio.gitignore的旧版本(恰好在4月修复了NCrunch问题).
我在哪里可以找到或配置Visual Studio git提供程序自动放入git repo的.gitignore源代码?
(编辑:我看了忽略主题,我假设是VS 2013 git功能的官方文档,但它没有帮助找到一个系统范围的设置.它只是提到"默认的.gitignore文件提供者Visual Studio"没有提及如何修改此文件."
也许奇怪的问题.我们有许多内部编写的简单实用程序,需要在自动化的基础上运行.这些不是构建工作.只是事情喜欢跑步SendOutHourlyEmailAlarms.exe,KeepFoldersInSynch.exe和这样的.我通常将这些事情设置为简单的计划任务/ AT命令(如果需要对调度进行更精细的控制,则为Windows服务),但是同事已经在CruiseControl上设置了许多这些任务作为构建项目. NET服务器.我问他为什么以这种方式设置这些并且他的响应是执行(及其日志,返回值,抛出的异常)都被跟踪和记录,并且这些信息可以通过构建服务器网站上的有组织的界面访问.我无法与此争论.
但这只是一种我无法辨认的气味.这是CruiseControl.NET的正确使用吗?如果没有,危险是什么?即使它可能适合该法案,是否还有其他产品更适合这种类型的东西?
我有一个在它自己的线程中运行的进程,可以在不阻塞的情况下启动/停止.这将最终进入Windows服务,但我现在在控制台应用程序中设置它,直到它完全充实.
在调用Start()之后,我希望主程序线程被阻塞,直到按下Ctrl-C.我知道这会奏效:
public static void Main(string[] args)
{
bool keepGoing = true;
var service = new Service();
System.Console.TreatControlCAsInput = false;
System.Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e)
{
e.Cancel = true;
service.Stop();
keepGoing = false; // Break the while loop below
};
service.Start();
while( keepGoing )
{
Thread.Sleep(100); // 100 is arbitrary
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我发现标志和任意睡眠值令人烦恼.我知道while循环中的CPU成本几乎为0,但我宁愿有一个"硬"块,一旦完成Ctrl-C处理程序就会释放.我设计了下面的内容,使用信号量来阻止,直到完成匿名的Ctrl-C处理程序:
public static void Main(string[] args)
{
var service = new Service();
var s = new Semaphore(1, 1);
System.Console.TreatControlCAsInput = false;
System.Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e) …Run Code Online (Sandbox Code Playgroud) c# ×3
alter-table ×1
c++ ×1
cqrs ×1
events ×1
git ×1
gitignore ×1
https ×1
ignore ×1
iis-express ×1
linq ×1
semaphore ×1
sortedlist ×1
sql-server ×1
ssl ×1
ssms ×1
wif ×1