Tag: visual studio 2010

streamWriter重写文件或附加到文件

我正在使用这个 for($number=0; $number < 5; $number++){ StreamWriter x = new StreamWriter("C:\\test.txt"); x.WriteLine(number); x.Close(); } 如果某些内容在test.text中,则此代码不会覆盖它。 我有两个问题 1: how can I make it overwrite the file 2: how can I append to the same file 使用C#

在表单内创建表单

我是Visual Studio 2010的新手,我打算创建一个计时系统。 我只是想问一下如何创建一个组成2个表单的表单。 例如,如果我单击一个按钮,它将在表单中打开一个新表单。 请帮忙。 谢谢

为什么我(有时)必须引用我引用的程序集引用的程序集?

我有一个程序集A,它定义了一些带有一些重载的接口: public interface ITransform { Point InverseTransform(Point point); Rect InverseTransform(Rect value); System.Drawing.Point InverseTransform(System.Drawing.Point point); } …以及引用A(二进制文件而不是项目)的程序集B并调用其中一个重载: var transform = (other.Source.TransformToDisplay != null && other.Source.TransformToDisplay.Valid) ? other.Source.TransformToDisplay : null; if (transform != null) { e.Location = transform.InverseTransform(e.Location); } 确切地说,它调用InverseTransform方法的System.Windows.Point重载,因为这是e属性Location的类型。 但是当我在IDE中构建B时,我得到: 错误CS0012:类型’System.Drawing.Point’在未引用的程序集中定义。 您必须添加对程序集’System.Drawing,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a’的引用。 即使这甚至不是我所说的过载。 当我注释掉调用重载方法InverseTransform ,即使我仍在实例化ITransform类型的对象,它也能正常构建。 为什么? 有没有办法解决这个问题,而无需在任何地方添加对System.Drawing的引用?

C#LINQ TO XML – 从DTD标题中删除“”字符

我最近在VS2010中创建了一个小的C#windows窗体/ LINQ to XML应用程序,完全按照它应该做的,除了一件事:它在DOCTYPE标记的末尾添加“[]”,这显然导致文件遗留系统拒绝。 这是一个前后: 之前 后 使用.Save函数将文件保存在程序中后,将添加这些字符。 该程序允许选择.xml文件,然后通过删除某些标签“清除”它,然后保存它。 进程开始时,文件在DOCTYPE中没有“[]”。 保存后,他们会这样做。 LINQ to XML是否添加了这些? 有没有办法让程序不添加这些字符?

Moq和Interop类型:在VS2012中工作,在VS2010中失败?

我有一个.NET库项目,大约有500个unit testing。 所有这些测试在Visual Studio 2012中运行良好。但是,我的一些测试在Visual Studio 2010中失败。在这些失败的测试中,我使用Moq从Microsoft.Office.Interop.Excel模拟几个互操作类型。 尝试访问这些模拟的互操作类型时,测试立即失败: Error: Missing method ‘instance class Microsoft.Office.Interop.Excel.Range [ExcelAddIn.Core] Microsoft.Office.Interop.Excel.ListRow::get_Range()’ from class ‘Castle.Proxies.ListRowProxy’. 这个exception意味着我忘了在mock上设置适当的属性getter。 事实并非如此: _listRowMock.Setup(m => m.Range).Returns(_rangeMock.Object); 现在我可以想象Moq对于Interop类型可能效果不佳。 但我发现最令人费解的是,这些测试在Visual Studio 2012中运行良好,但在Visual Studio 2010中失败。 为什么我的Visual Studio会影响我的代码行为? 更新:2012年3月11日 好的,所以我明白了: 我有两个项目; Core和Core.UnitTest。 Core是实际的库,而Core.UnitTest是Core库的unit testing项目。 这两个项目都引用了Microsoft.Office.Interop.Excel并启用了嵌入互操作类型。 因为启用了EIT,所以这两个项目都包含自己的Microsoft.Office.Interop.Excel库“视图”。 该视图包括其各自项目中使用的所有类,方法和属性。 由于两个项目都使用Microsoft.Office.Interop.Excel的不同类,方法和属性,因此两个库的嵌入类型不同。 例如,Core中的ListRow具有Index和Range属性,而Core.UnitTest中的ListRow仅具有Range属性。 虽然两种类型都不同,并且不共享公共接口或超类,但它们是等效的 。 这意味着CLR会将它们视为相同,并允许您跨组装边界使用这些类型。 例如,Core.UnitTest中的ListRow实例在传递给Core库中的方法时可以正常工作。 共享的Range属性将起作用,而缺少的Index属性将在访问时抛出MissingMethodException。 上述行为甚至适用于模拟类型。 Mock [Excel.ListRow]的模拟对象在穿过assembly边界时可以正常工作。 不幸的是,前一点中描述的行为仅在我在Visual Studio 2012中构建程序集时才有效。 当我在Visual […]

Visual Studio:使用外部文件(不复制它们)

我想将枚举类(.cs)导入到由另一个服务生成的项目中。 因此,如果该服务将更新此文件,则应在我的项目中自动更新。 它必须是纯文本的(因此我不能使用程序集)因为我们无法在php中编译代码。 这就是为什么我想要这个:我们在多个应用程序中使用全局语言字符串,并且出于某些原因我想将它们用作枚举。 添加新文本时,我希望能够在不复制或更改任何内容的情况下使用它们。 也许有另一种方法来实现这一目标。 谢谢。

C#编译器优化 – 未使用的方法

C#编译器(在VS2008或VS2010中)在编译时是否删除未使用的方法? 我认为决定是否使用公共方法可能有问题,所以我猜它会编译所有的公共方法。 但是在类中从未使用的私有方法呢? 编辑: 是否存在关于编译器optmization的一组规则,这些规则在任何地方都有记录?

阻止visual studio在任务中打破exception

我有以下代码: Task load = Task.Factory.StartNew(() => {//Some Stuff Which Throws an Exception}); try { load.Wait(); } catch (AggregateException ex) { MessageBox.Show(“Error!”); } 当任务中抛出一个exception时,我希望它在try catch中被冒泡,而不是在导致exception的时候打破visual studio。 我尝试谷歌和一些建议我在我的方法上添加这个[DebuggerHidden]但它不起作用

如何捕捉面板上的鼠标滚轮?

如何在C#中捕获面板上的鼠标滚轮? 我正在使用WinForms 编辑: 我现在尝试在PictureBox上做。 我的代码: this.pictureBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseClick); this.pictureBox1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseClick); private void pictureBox1_MouseClick(object sender, MouseEventArgs e) { MessageBox.Show(“Click”); } 点击有效。 催促没有。 为什么?

是否有一个设置阻止未处理的exception对话框显示在我编译的应用程序中?

我不确定这是否是正确的地方,但无论如何我都会。 我有2个.NET应用程序; 一个是我自己编写的,另一个不是。 两者都使用.NET Framework 4.5。 但他们处理不同的例外。 在我没有编译的应用程序中; 它显示了未处理的exception对话框(我希望和期望) 但在我编译的应用程序中; 它只是显示应用程序已崩溃; 所以VS配置或项目配置中必须有一个设置阻止未处理的exception对话框在我编译的应用程序中显示?… 我尝试重新安装VS,更改Debug-> Exceptions菜单中的设置,两者都没有…