Tag: .net

如何使用SqlCacheDependency?

我需要为依赖于此查询的表实现SqlCacheDependency: SELECT Nickname FROM dbo.[User] 。 我为此创建了一个方法: private IEnumerable GetNicknamesFromCache() { const String cacheValueName = “Nicknames”; var result = HttpRuntime.Cache.Get(cacheValueName) as List; if (result == null) { result = _repository.GetAllNicknames(); var connectionString = ConfigurationManager.ConnectionStrings[“RepositoryContext”].ConnectionString; var sqlConnection = new SqlConnection(connectionString); var sqlCommand = new SqlCommand(“SELECT Nickname FROM dbo.[User]”, sqlConnection); var sqlDependency = new SqlCacheDependency(sqlCommand); HttpRuntime.Cache.Insert(cacheValueName, result, […]

在.net 4.0上执行应用程序时,在.net 2.0下编译

假如说: 下面的C#源代码是在.NET 2.0(CLR 2.0)下编译的; 和 上面的应用程序使用下面列出的app.config ; 和 只有.NET 4.0(CLR 4.0)安装在执行应用程序的客户端的环境中, 然后在内部加载哪个版本的.NET来在客户端环境中执行应用程序? 描述 下面的控制台应用程序将在控制台中显示其CLR版本为v4.0.30319 ,但@Reed Copsey对堆栈的回答( CLR 2.0与4.0性能? )表明在这种情况下加载了.NET 2.0。 此外,在MSDN上,它表示当useLegacyV2RuntimeActivationPolicy设置为false false : 使用.NET Framework 4及更高版本的默认激活策略, 即允许旧版运行时激活技术将CLR版本1.1或2.0加载到该过程中。 尽管app.config具有.NET 4.0配置,但听起来像是加载了.NET 2.0。 我误解了什么吗? 资源 C#源代码 namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string version = Environment.Version.ToString(); Console.WriteLine(version); } } } app.config

值在枚举列表中

我有一个相当基本的问题:如何检查给定值是否包含在枚举值列表中? 例如,我有这个枚举: public enum UserStatus { Unverified, Active, Removed, Suspended, Banned } 现在我想检查status in (Unverified, Active) 我知道这有效: bool ok = status == UserStatus.Unverified || status == UserStatus.Active; 但必须有一种更优雅的方式来写这个。 这个queston的主题非常相似,但那是处理标志枚举,这不是标志枚举。 提前致谢。

在更改汇编/文件版本后保留用户的设置

背景 我有一个用C#编写的简单WinForms应用程序。 我讨论了一段时间的部署解决方案,但最终决定放弃ClickOnce,因为一些约束是至关重要的限制。 相反,我已经改编了一个简单的解决方案,通过程序集/文件版本(我保持同步)在应用程序的属性中对应用程序进行版本控制。 我正在通过安装项目(* .msi)进行部署。 我将最新的汇编版本号在线存储在XML文件中,以及最新的安装程序文件。 在运行时,我只是在线检查Application.ProductVersion对照最新版本,如果有更新,则打开更新对话框。 问题 到目前为止,这种方法运作良好,但我最近发现这种方法存在一个主要问题。 更新应用程序的程序集版本时,将在AppData / Company / Product / Version / blahblahblah中创建用户的设置文件(user.config)的新版本。 这显然迫使用户重置新版本中的所有内容。 建议的解决方案 我不知道该怎么办。 到目前为止,应用程序只有1个版本,目前的用户群基本上是我可以求它测试它的人,所以切换策略没什么大不了的。 我考虑过: 1.)编写我自己的设置系统,从而完全控制设置文件的存储和使用位置/方式。 2.)重新考虑我的版本控制/更新策略,以便更新不基于程序集版本。 我不确定如何做到这一点,但我的测试似乎表明即使构建和安装具有相同程序集版本的新版本仍然会破坏user.config。 我想我真正想知道是否有任何方法可以保留默认设置系统,因为它很容易使用,同时也适应我的部署策略。

使用OAuth 2和服务帐户访问旧的GData API(电子表格API)

简短的问题是这是否可能,如果可能,如何? 大纲 我有一个.NET应用程序,它目前使用服务帐户使用Google Drive API访问Google Apps域中的信息。 这可以正常使用google-api-dotnet-client库和代码沿着这里的示例所示的相同行 – 这是目前我正在做的非常好的基本示例。 我现在要做的是扩展它,以及使用 “新”google-api-dotnet-client库提供的那些API ,它使用旧的“GData”库,通过较旧的google-gdata库提供 ,特别是Spreadsheets API(也许还有更多)。 问题 这就是出现困难的地方。 前一个库正是我想要的,正如上面第一段中的第二个链接所certificate的那样 – 以及我自己做它的事实。 但是 ……虽然第二个库已经更新以支持OAuth 2.0以及其他旧的auth技术,但它没有 – 据我所知,从广泛的谷歌搜索和追踪错误 – 允许“代表我所有用户的服务帐户“我需要的操作。 我的问题是我是否遗漏了一些东西(可能很难找到或没有记录的东西),这些东西可以让我做我想做的事。 如果失败了,有什么方法可以强迫这种行为并使这两个库并排运行? 理想的解决方案 理想情况下,我会喜欢某种方式让Google.GData.Spreadsheets.SpreadsheetsService实例能够利用我已经在某种程度上使用的Google.Apis.Authentication.Auth2Authenticator实例。 这种巫术有可能吗? 我错过了那个显而易见的东西吗? 如果不这样做,我很高兴再次完成整个OAuth2“断言流客户端”的舞蹈,如果我不得不以旧版图书馆可以处理的方式。 救命? 其他想法 我考虑过 – 暂时拒绝 – 选择从头开始编写我自己的库来实现这一目标。 这有两个原因: gdata库已经存在,并且已经被许多人开发,可能比我自己聪明。 我不是那么傲慢,我相信我能做得更好。 我不确定这些旧API上是否支持/允许使用服务帐户方法的OAuth2。 我一直希望避免但可能不得不依赖于这里的答案的另一种方法是使用双腿OAuth 1.0来实现这一点。 我不愿意,因为应用程序的某些部分依赖于一种旧的auth方法,而其他部分则使用这种新方式对我来说感觉不对。 还有更多的问题…… 更新 我已经考虑过inheritanceGDataRequestFactory和GDataRequest的可能性,所以我可以创建自己的请求工厂,并使用Google.Apis.Authentication.Auth2Authenticator的实例(好吧,无论如何, Google.Apis.Authentication.IAuthenticator的实例)它可以在调用之前介入validation请求。 但是…… GDataRequest的构造函数是内部的,这已经阻止了我。 它真的看起来像是不应该的。

如何更改安装项目中的窗口Applicatoin的默认图标

如何在C#桌面应用程序中更改Windows应用程序的默认图标。 我试图在安装项目中更改它,但事实并非如此。 我想用应用程序的快捷方式显示我自己的图标,而不是Windows默认图标

ASP.NET自定义控件 – 复合材料

摘要 大家好, 好的,进一步进入我的自定义控件冒险…… 总之,这是我已经了解了自定义控件的三个主要“类”。 如果有任何错误,请随时纠正我! UserControls – inheritance自UserControl并包含在ASCX文件中。 这些内容在他们能做的事情上非常有限,但是通过设计师支持获得一些UI通用性是一种快速而轻松的方式。 自定义复合控件 – 这些是从WebControlinheritance的控件,您可以在CreateChildControls方法中向控件添加预先存在的控件。 这提供了极大的灵活性,但缺乏设计师支持而无需额外编码。 它们是高度可移植的,因为它们可以编译成DLL。 自定义渲染控件 – 与自定义复合控件类似,这些控件将添加到Web控件库项目中。 控制器的渲染完全由程序员通过重写Render方法来控制。 我的想法.. 好的,所以在玩自定义复合材料时,我发现了以下内容: 您很少/无法控制HTML输出,因此难以“调试”。 CreateChildControls (和后续方法)可以在任何地方真正忙于Controls.Add(myControl) 。 我发现渲染表(无论是布局还是内容)都非常尴尬。 问题.. 所以,我承认,我是新手,所以我可能会偏离上面提到的一些观点。 你使用复合材料吗? 你有任何巧妙的技巧来控制HTML输出吗? 你只是说“用它来下地狱”并继续创建自定义渲染控件吗? 因为我知道有多少好的控制开发可以缩短整体开发时间,所以我很想在脑子里真正坚定。 我期待你的回答^ _ ^

等待QueueUserWorkItem完成

如果我使用QueueUserWorkItem向线程池添加作业…如何在完成所有作业之前使程序继续运行? 我知道我可以添加一些逻辑来保持应用程序不运行直到所有作业都完成,但我想知道是否有类似Thread.Join()或者是否有任何方法来检索正在分配作业的每个线程。

.NET中的垃圾收集(代)

我已经阅读了很多.NET性能文章,这些文章描述了Gen1,Gen2垃圾收集和几代人幸存的对象。 为什么对象能够在收集中存活? 什么是钉扎? 我如何了解更多相关信息?

是否有内置函数来反转位顺序

我想出了几种手动方式,但我一直想知道是否有内置的.NET可以做到这一点。 基本上,我想要反转一个字节中的位顺序,以便最低有效位成为最高有效位。 例如:1001 1101 = 9D将变为1011 1001 = B9 关于如何执行此操作的方法是使用按位操作,如果遵循此伪代码: for (i = 0; i>1 x= byte & 1 byte >>1 y = x|y; } 我想知道是否有某个function允许我在一行中完成所有这些操作。 另外,你知道这个操作的术语,我确定有一个,但我现在记不起来了。 谢谢