C#编译为单声道 – 检测操作系统

我试图在OSX下运行一个C#应用程序,这不是没有痛苦的。 要在短期内解决一些问题,我想在OSX中运行时设置一些特定的规则。 但是……我可以用什么来确定应用程序是在Windows还是OSX下运行?

可以使用Dapper默认使用AnsiStrings吗?

我正在使用Dapper对数据库,其中字符串主要存储在VarChar列中。 默认情况下,Dapper在生成查询时使用NVarChar参数,虽然我可以将我使用的每个字符串参数包装在DbString但默认情况下使用AnsiStrings并使用DbString作为NVarChar案例NVarChar 。 我尝试将Dapper源中的类型映射从DbType.String为DbType.AnsiString但是这似乎导致参数委托的IL生成错误(抛出InvalidProgramException )。 有更简单的方法吗? 更新 只是改变typeMap是不够的我需要改变一些if (dbType == DbType.String)检查。 现在它有效!

WinDbg:SOS.dll x86 4.0.30319.237的副本

我正在使用WinDbg来查看进程转储。 转储已在具有.NET 4 SP1(4.0.30319.237)的x86服务器上进行。 我正在尝试使用x86版本的WinDbg在我的x64机器上进行调试,但是我遇到了以下问题。 0:000> !EEVersion The version of SOS does not match the version of CLR you are debugging. Please load the matching version of SOS for the version of CLR you are debugging. CLR Version: 4.0.30319.237 SOS Version: 4.0.30319.239 4.0.30319.237 retail Workstation mode SOS Version: 4.0.30319.239 retail build 由于我的机器已采用最近的安全补丁,SOS DLL文件现在为4.0.30319.239版本,因此我无法在WinDbg中使用任何CLR扩展。 我已连接到Microsoft符号服务器并获得了正确版本的mscordacwks.dll 。 […]

如何在C#中以编程方式创建XSD文件?

我有一个xml文件(我使用XmlDocument在c#中创建),现在我必须创建xsd文件,它也在C#中以编程方式对应…我怎么能这样做? 我可以使用相同的类来创建xml文件吗? 或者我应该使用其他任何(xsd相关)类?

Azure Webjobs的命令行参数

我正在迁移之前安排并通过Quartz.Net运行到Azure Webjobs的几个Jobs。 使用Quartz.Net允许我在与初始化调度程序的控制台程序入口点相同的项目中拥有所有(非常紧凑的)作业类。 现在,我希望保留该结构,而无需为每个Web作业创建一个独立的控制台应用程序项目。 目前是否有任何方法可以为连续Web作业配置命令行参数,以允许根据命令行参数在内部分支到正确的作业?

C#数据集访问数据库

我有一个从csv文件动态创建的数据集。 我想要做的是将行插入我的MS Access表,但我无法弄清楚从哪里开始。 数据集中数据的标题可以根据顺序而变化,但标题的名称将始终与访问数据库匹配。 我是否必须在insert命令中静态调用标题名称,还是可以从数据集中构建标题? 我知道如何创建连接并将其打开到数据库,但我不知道如何在insert命令中创建动态拉动表头。 在C#编程方面,我很绿,所以如果你能为我拼出来,我真的很感激! 以下是访问表标头的示例: ID,项目,成本,零售 然后是CSV,它将填充数据集表。 它可能有零售或可能没有: 物品,成本 这是我到目前为止的代码,但它没有写入访问表。 如果我发现dtAccess它正确显示。 OleDbConnection myConnection = new OleDbConnection(“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\”C:\\Database.accdb\”;Persist Security Info=False;”); myConnection.Open(); string queryString = “SELECT * from ” + lblTable.Text; OleDbDataAdapter adapter = new OleDbDataAdapter(queryString, myConnection); DataTable dtAccess = new DataTable(); DataTable dtCSV = new DataTable(); dtCSV = ds.Tables[0]; using (new OleDbCommandBuilder(adapter)) { […]

SQL:在VarBinary列上按顺序执行UPDATE .WRITE

我正在尝试创建一个小的测试应用程序,它读取FileStream的块并将其附加到SQL Server 2005 Express上的VarBinary(max)列。 一切正常 – 列应该按照它应该填充,但我的机器似乎仍然将所有内容缓冲到内存中,我只是看不清楚原因。 我正在使用以下代码(C#): using (IDbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings[1].ConnectionString)) { connection.Open(); string id = Guid.NewGuid().ToString(); using (IDbCommand command = connection.CreateCommand()) { command.CommandText = “INSERT INTO [BLOB] ([Id],[Data]) VALUES (@p1,0x0)”; SqlParameter param = new SqlParameter(“@p1”, SqlDbType.VarChar); param.Value = id; command.Parameters.Add(param); command.ExecuteNonQuery(); } if (File.Exists(textBox1.Text)) { using (IDbCommand command = connection.CreateCommand()) { […]

下载多个文件的更快捷方式

我需要从SEC网站下载大约200万个文件。 每个文件都有一个唯一的URL,平均为10kB。 这是我目前的实施: List urls = new List(); // … initialize urls … WebBrowser browser = new WebBrowser(); foreach (string url in urls) { browser.Navigate(url); while (browser.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents(); StreamReader sr = new StreamReader(browser.DocumentStream); StreamWriter sw = new StreamWriter(), url.Substring(url.LastIndexOf(‘/’))); sw.Write(sr.ReadToEnd()); sr.Close(); sw.Close(); } 预计的时间大约是12天……有更快的方法吗? 编辑:顺便说一句,本地文件处理只占7%的时间 编辑:这是我最后的实现: void Main(void) { ServicePointManager.DefaultConnectionLimit = 10000; List […]

Guid Uniqueness在不同的机器上

可能重复: GUID是100%独一无二的吗? 在阅读Guid上的所有post后,我仍然不清楚一件简单的事情: 由不同机器生成的Guids也保持其唯一性。 我已经阅读过关于单机的guid唯一性,但我仍然不了解不同机器的唯一性

SagePay .Net Integration Kit – 返回3dSecureStatus的NOTAVAILABLE值时出错

我使用表单集成实现了SagePay付款。 我的实现是基于SagePay提供的.Net集成工具包,一切都很好。 最近我们启用了3D Secure,当3DSecureStatus的值返回值NOTAVAILABLE时遇到了问题。 看起来当返回NOTAVAILABLE值时,在程序集SagePay.IntegrationKit.DotNet.dll的SagePayIntegration类的ConvertToSagePayMessage()方法调用中会抛出错误。 特别是,将值解析为ThreeDSecureStatus枚举时会发生此错误。 此枚举没有NOTAVAILABLE可以解析的值,因此错误。 我暂时解决了这个问题,现在才开始工作。 此修复程序将NOTAVAILABLE值替换为NONE ,因此现在解析为有效的枚举值。 这是在调用ConvertToSagePayMessage()之前完成的 cryptDecoded = cryptDecoded.Replace(“3DSecureStatus=NOTAVAILABLE”, “3DSecureStatus=NONE”); 我只是想知道为什么ThreeDSecureStatus枚举没有ThreeDSecureStatus的值,因为NOTAVAILABLE是它预期返回的值之一,这在SagePay提供的表单集成协议指南中有所概述。 并希望实现更强大的修复,而不是字符串替换。