Tag: C#的

2 GB真的是我的最大值?

进程地址空间告诉我,我的.NET应用程序最多只能在Windows XP上使用2 GB。 真的吗? 但是如果我有一个20TB的硬盘呢。 它会不能使用一些驱动器空间?

在C#中排列对象列表

public class CarSpecs { public String CarName { get; set; } public String CarMaker { get; set; } public DateTime CreationDate { get; set; } } 这是一个列表,我试图找出一个有效的方式来sorting列表CarList,包含6(或任何整数量)汽车,汽车制造date。 我打算做泡沫sorting,但将工作? 任何帮助? 谢谢

“UserControl”types不支持直接内容

我有一个Outlook 2013和2016 VSTO外接项目,并试图将WPF用户控件添加到自定义任务窗格中,如此处所述。 我遇到的问题是,当我添加用户控件(WPF)时,它会生成一个带有网格的WPF控件,但会自动抛出“types”UserControl“不支持直接内容”的错误。 WPF生成: <UserControl x:Class="TestNamespace.UserControl1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:TestNamespace" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> <Grid> </Grid> </UserControl> 我知道在过去,我不得不将WPF项目typesguid添加到.proj文件,以获得一些工作,但添加这没有什么区别(事实上,它甚至不会按照特定顺序加载)。 原版的: <ProjectTypeGuids>{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 崩溃: <ProjectTypeGuids>{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 不会崩溃,但不会修复错误: <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 任何人都可以指向正确的方向吗? UPDATE 我试图直接创build一个新的类库项目,添加一个WPF用户控件,然后添加到System.Xaml的引用,我有同样的问题。

通过Facebook发送消息聊天API(XMPP)C#

////////////////////////////////////////////////// //////////////////////////////////////////////// // OBSERVE https://developers.facebook.com/docs/chat/ 本文档涵盖的服务和API已随Platform API v2.0的发布而被弃用。 一旦版本1.0被弃用,chat.facebook.com将不再可用。 //阅读这篇文章,你可能想做一些与这个问题完全不同的东西。 ////////////////////////////////////////////////// ////////////////////////////////////// 我正在创build一个与WebForms C#连接到Facebook Chat API的聊天工具。 我也看过这个问题 (和所有的链接)。 由于Facebook现在需要auth_token某些部分不再相关。 要复制这个,你应该build立一个Facebook的networking应用程序,使用appId和用户帐户与xmpp_login权限设置。 然后创build一个带有代码的Chat.aspx ,并相应地粘贴这个代码。 并replace硬编码的用户进行交互。 我有两个(也许是三个)问题,我相信阻止我成功发送聊天消息。 在文档中logging为// finishes auth process与文档描述不匹配(在收到来自Facebook的基于SSL / TLS的成功消息后,我没有收到任何响应。) 我不知道如何设置“发送聊天消息”部分,因为我没有收到任何来自Facebook的消息,所以很难说出可能的错误。 这是我的完整的代码,在PasteBin上 。 我也有一些助手添加xmpp_login权限等。删除为清晰起见。 全局variables: public partial class Chat : Page { public TcpClient client = new TcpClient(); NetworkStream stream; private SslStream ssl; private string […]

asynchronous提交或回滚事务作用域

众所周知,在.NET中引入async await模式时, TransactionScope被遗忘了。 如果我们试图在事务范围内使用一些await调用,它们就会被破坏。 现在这是固定的,由于范围构造选项 。 但是在我看来,还有一个缺失的部分,至less我无法find如何在简单的“事务范围”方式中这样做:如何等待范围的提交或回滚? 提交和回滚也是IO操作,它们应该是可以等待的。 但是,由于它们是在处理范围内发生的,我们将不得不等待处置。 这看起来不可行( using模式也不实际)。 我也看了一下System.Transactions.Transaction接口:在那里也没有可以使用的方法。 我明白,提交和回滚几乎只是向数据库发送一个标志,所以它应该是快速的。 但是对于分布式交易,这可能不那么快。 无论如何,这仍然是一些封锁IO。 关于分布式病例,请记住这可能会触发两个阶段提交。 在某些情况下,在第一阶段(准备阶段)需要额外的耐用资源。 那通常意味着对最近入伍的资源发出一些额外的查询。 在提交期间发生的所有事情。 那么有什么方法可以等待事务范围吗? 还是一个System.Transactions.Transaction ? 注意:我不认为这是“ asynchronous提交/回滚SqlTransaction? ”的副本。 SqlTransaction比系统事务更有限。 他们只能解决SQL Server,并且从不分发。 其他一些事务具有asynchronous方法,如Npgsql 。 现在,对于事务范围/系统事务有asynchronous方法, DbTransaction可能需要有asynchronous方法。 (我不知道系统事务的内部,但也许是使用这个ADO.NET合约,我们把连接join系统事务的方式让我觉得它并没有使用它。

为什么从SQL Server 2008及更高版本中不支持generics派生的CLRtypes?

以下代码实现了从generics(SortedDictionary)派生的UDT: [Serializable] [Microsoft.SqlServer.Server.SqlUserDefinedType(Format.UserDefined, MaxByteSize = 8000)] public class udtMassSpectra : SortedDictionary<float, float>, INullable, IBinarySerialize, ICloneable, IDisposable { … } 创buildtypes(T-SQL): CREATE TYPE dbo.udtMassSpectra EXTERNAL NAME MassSpectra.udtMassSpectra; 抛出exception: 程序集“MassSpectra”中的消息10331,级别16,状态1,行1types“udtMassSpectra”派生自CLRtypes不支持的genericstypes。 是什么原因? 除了在私有成员中隐藏基类之外,是否有任何解决方法? 此代码在SQL Server 2005上正常工作。

将project.json包引用添加到VSIX

当试图添加对VSIX的引用时,它通常将其从.csproj中的引用中拉出。 但是,如果引用不在.csproj中,因为它们现在位于project.json文件中,那么它们不会被拉到vsix。 解决scheme然后可以编译,但是当安装到Visual Studio中(因为不复制到VSIX的程序集),扩展失败,出现“文件未find”错误。 我尝试了清单的部分,如下所示: <Asset Type="Microsoft.VisualStudio.Assembly" d:Source="Project" d:ProjectName="*PROJECTNAME*" Path="|*ASSEMBLYNAME*|" AssemblyName="|*ASSEMBLYNAME*;AssemblyName|" /> 但它不起作用,因为它不能识别软件包引用。 经过一番研究,我看到了一个与PCL类似的问题,但是,没有一个答案,也没有相同types的问题: 使用Microsoft组合MEF的可移植类库MEF2抛出文件没有findexception 在同样的说明中,这似乎是一个可以接受的解决方法:但是,就我所知,这意味着在安装过程中使用该软件包。 除此之外,它不适用于我们的情况,因为他们需要指定包版本,我们正在使用project.json,所以我们可以使用浮动版本(即:2.0。*) 有没有办法引用我们失踪的这个project.json引用? 也许是一个解决方法? 我发现的解决scheme似乎都需要在某处“粘贴”de DLL,这对于浮动版本来说并不方便。 提前感谢任何帮助或input。 编辑/更新 :由于VSIX自动推送在CSPROJ(而不是项目本身)中引用的任何程序集,试图获得在项目级别的DLL似乎不太可能。 经过多次尝试,我认为有效的解决方法是从输出文件夹中获取程序集。 然而,据我所知,VSIX没有办法做到这一点,或者呢?

.NET WCF w3wp本地内存泄漏和加载程序堆中的大小为0的18kdynamic程序集

我们的WCF服务显示了大量内存使用的实例,所以我们花了一个完整的内存转储来确定问题。 Operating System Windows Server 2008 R2Service Pack 1 Number Of Processors 4 Process Image c:\Windows\System32\inetsrv\w3wp.exe System Up-Time 40 day(s) 09:23:09 Process Up-Time 14 day(s) 11:49:01 .NET 4.0 Processor Type X64 Process Bitness 64-Bit 从DebugDiag报告的问题的直升机视图。 进程是垃圾收集,所以根据警告我不应该信任!heap命令的所有输出。 Gc堆:1.37 GBytes .NETcaching大小为750Mb, 虚拟内存详细信息:虚拟分配:17.45 Gb加载模块:208.68 Mb线程数:25 Mb本地堆积:3.06 Gb(我很关心这个) 从上面的3.02 Gb出现在Heap 0x003f0000 。 我们有很好的stream量,这样1.3 gb Gb的堆大小感觉对我来说是正常的。 此外,我们有32 gb RAM和64位地址空间的机器,所以caching大小750 mb是可以接受的。 […]

为什么我的日志logging库会使性能testing运行得更快?

我花了一年的时间开发一个C ++的日志logging库,并且考虑到性能。 为了评估性能,我开发了一套基准testing程序 ,将我的代码与其他库进行比较,其中包括根本不执行任何日志logging的基本情况。 在我的上一个基准testing中,我测量了一个CPU密集型任务的总运行时间。 然后我可以比较一下时间来确定我的图书馆有多less开销。 这个条形图显示了与我的非测井基础案例相比的差异。 正如你所看到的,我的库(“鲁莽”)增加了负面开销 (除非所有4个CPU核心都忙)。 当启用日志function时,程序运行速度比停用时快大约半秒。 我知道我应该尝试把这个问题分解成一个简单的案例,而不是问一个4000线的项目。 但是有那么多的地方要去掉什么东西,没有一个假设,当我试图隔离它的时候,我会让问题消失。 我可能再花一年时间来做这件事。 我希望堆栈溢出的集体专业知识会使这个问题变得更加简单,或者对于那些比我更有经验的人来说,这个原因是显而易见的。 关于我的图书馆和基准的一些事实: 该库由一个将日志参数推送到无锁队列(Boost.Lockless)的前端API和一个执行string格式化并将日志条目写入磁盘的后端线程组成。 时间是基于简单地在程序的开始和结束处调用std::chrono::steady_clock::now() ,并打印差异。 该基准testing是在一个4核英特尔CPU(i7-3770K)上运行的。 基准程序计算一个1024×1024 Mandelbrot分形并logging每个像素的统计信息,即它写入大约一百万条日志条目。 单个工作线程的总运行时间约为35秒。 所以速度增加大概是1.5%。 基准testing产生一个输出文件(这不是定时代码的一部分),它包含了生成的Mandelbrot分形。 我已经validation,日志打开和closures时产生相同的输出。 基准testing运行了100次(所有基准testing库都需要大约10个小时)。 条形图显示平均时间,误差棒显示四分位间距。 Mandelbrot计算的源代码 基准的源代码 。 代码库和文档的根 。 我的问题是,我怎样才能解释当我的日志库启用明显的速度增加? 编辑 :这是在尝试了评论中给出的build议后解决的。 我的日志对象是在基准testing的第24行创build的。 显然,当LOG_INIT()触及日志对象时,它会触发页面错误,导致图像缓冲区的一些或全部页面被映射到物理内存。 我仍然不确定为什么这会将性能提高近半秒; 即使没有日志对象,在mandelbrot_thread()函数中发生的第一件事是写入图像缓冲区的底部,这应该具有类似的效果。 但是,在任何情况下,在开始基准testing之前用memset()清除缓冲区会使得一切更加理智。 目前的基准在这里 其他我试过的事情是: 用oprofile分析器运行它。 即使在将工作放大10分钟左右之后,我也从来没有能够在任何时间注册。 几乎所有的时间都在Mandelbrot计算的内部循环中。 但是,也许现在我知道页面错误,我可以用不同的方式解释它们。 我没有想到要检查图像写入是否花费了不成比例的时间。 卸下锁。 这确实对性能有显着的影响,但结果仍然很奇怪,无论如何,我无法对任何multithreading变体进行更改。 比较生成的汇编代码。 有差异,但日志build设显然是做更多的事情。 没有什么是一个明显的表演杀手。

假阳性:先决条件是多余的

为什么一旦警告级别处于第二级或更高级别,这个小代码示例就会得到以下警告? public int Foo(int a) { if (a >= 0) throw new ArgumentException("a should be negative", "a"); Contract.EndContractBlock(); return a; } CodeContracts:build议的要求:这个先决条件是多余的:考虑删除它。 你比较一个结构值为null? 显然,整数可以是负数,所以前提条件很难多余,那么为什么我会得到这个警告呢? 编辑:这是什么ILSpy显示创build的function在看exe时: public int Foo(int a) { if (a >= 0) { ContractHelper.RaiseContractFailedEvent(ContractFailureKind.Precondition, null, "a < 0", null); throw new ArgumentException("a should be negative", "a"); } return a; }