Tag: visual studio 2008

代码分析回来时建议不要使用“out”参数

我针对我创建的对象运行了VS 2008代码分析工具,并收到了以下建议…… 警告147 CA1021:Microsoft.Design:考虑一种不要求’returnValue’为out参数的设计。 我发现“out”参数非常有用,并没有意识到它们被认为是一种不受欢迎的设计实践。 我想知道是否有人可以了解我收到此警告的原因? 如果这是不好的做法? 为什么? 什么是好的做法? 我很感激任何建议。

VS2008unit testing – 断言方法退出

我正在尝试使用VS 2008的内置unit testing框架编写C#unit testing,我正在测试的方法是调用Environment.Exit(0) 。 当我在unit testing中调用此方法时,我的unit testing被中止。 该方法确实应该调用Exit ,我想要一种方法来测试它,并且还要测试它使用的退出代码。 我怎么能这样做? 我查看了Microsoft.VisualStudio.TestTools.UnitTesting命名空间,但没有看到任何看起来相关的内容。 [TestMethod] [DeploymentItem(“myprog.exe”)] public void MyProgTest() { // Want to ensure this Exit’s with code 0: MyProg_Accessor.myMethod(); } 同时,这是我要测试的代码的要点: static void myMethod() { Environment.Exit(0); } 编辑:这是我在测试方法中使用的解决方案,感谢RichardOD : Process proc; try { proc = Process.Start(path, myArgs); } catch (System.ComponentModel.Win32Exception ex) { proc = null; Assert.Fail(ex.Message); […]

为什么foreach跳过对接口类型的编译时类型检查?

当我在C#中使用foreach循环时,如果项类型是接口类型,则似乎不执行编译时类型检查。 例如 class SomeClass {} interface SomeInterface {} IEnumerable stuff; foreach(SomeInterface obj in stuff) { // This compiles – why!? } 这将很乐意编译并在运行时导致exception,当在编译时清楚这没有意义。 如果我将项类型从SomeInterface为另一个类,则会恢复编译时类型检查: IEnumerable stuff; foreach(Random obj in stuff) { // This doesn’t compile – good! } 当项类型是接口时,为什么没有编译时类型检查? (这在Visual Studio 2008中的.NET 3.5 SP1中发生)

使用C#代码构建配置

有谁知道如何在C#代码中获取当前的构建配置$(Configuration)?

有没有办法*完全*禁用编辑并继续?

我想知道在Visual Studio 2008中调试它时是否有办法完全锁定我的代码。代码文件在作为64位应用程序运行时自动锁定,我更喜欢; 但是,我的大部分编码都是为Excel创建加载项,这是32位。 结果是,即使我以’AnyCPU’为目标,VS主机也知道它在32位进程内运行,因此,当代码在Visual Studio中托管时,源代码未被锁定。 我可以通过转到“工具”>“选项”>“调试”>“编辑并继续”,然后取消选中“启用编辑并继续”复选框来关闭“编辑并继续”。 但是,这并不能完全锁定代码。 这样可以防止代码中的任何编辑在当前运行中执行,但它不会阻止鼠标单击或击键实际更改代码。 同样,当使用64位应用程序时,这不会发生 – 代码完全被锁定。 我非常希望代码完全锁定至少有几个原因: 调试时我可能会意外碰到一个键或类似物,我绝对不想这样做。 这很罕见,但这是一个问题。 我的许多自动化测试通过SendKeys驱动用户界面。 但是,当使用调试器逐步完成这样的测试时,我有时会忘记某些方面涉及SendKeys,这意味着击键最终会被发送到Visual Studio IDE而不是Excel。 在上面的问题#2中,unit testing失败,这很好 – 我的不好 – 但是将所有键击发送到代码模块并破坏我的代码是完全不可接受的。 这里有没有人有任何想法? 在针对32位CPU编译时,可以在Visual Studio中运行托管时完全锁定代码吗? 关于这个问题的一些相关post,但没有一个直接解决这个问题: 如何:启用和禁用编辑并继续 在Visual Studio 2008中进行调试时,“不允许对64位应用程序进行更改” 如何在Visual Studio的调试模式下启用文件编辑? “编辑并继续”如何在Visual Studio中工作? 我们可以在运行应用程序时编辑代码 在调试时编辑C# 提前感谢任何帮助或想法…… 麦克风

如何增加ToolTip显示时间?

我有一个GridView,在它的RowDataBound事件中,我正在分配ToolTip如下: protected void gv_RowDataBound(object sender, GridViewRowEventArgs e) { try { if (gv.HeaderRow != null && e.Row.RowType == DataControlRowType.DataRow) { e.Row.ToolTip = “Remarks: ” + ((Label)e.Row.FindControl(“lblRemarks”)).Text; } } catch (Exception ex) { BussinessLayer.RIBOException.Instance.HandleMe(this, ex); } } 在这里,我想延长ToolTip的显示时间。 这该怎么做?

wince 6.0 c#中的全屏应用

我有我的应用程序,并希望它以全屏模式运行,没有任务栏。 我发现了如何隐藏窗口栏,但是当我启动我的应用程序时,它并没有覆盖Windows任务栏的空间,尽管这最后被隐藏了。 我发现了这个,但它没有用。 我无法找到关于wince的例子。 我有FormBorderStyle = None , WindowsState =最大化 解: 我找到了一种方法。 一个重要的提示是让WindowState = Normal (我花了一些时间才发现这个问题)。 如果您有WindowState = Maximized ,则无法将Form的高度设置为最大显示高度。 我写了这段代码来探测它,它工作正常。 是一个带有两个按钮的表单:button1(全屏)和button2(恢复默认屏幕) public partial class Form1 : Form { public Form1(){ InitializeComponent(); } [DllImport(“Coredll”)] internal static extern IntPtr FindWindow(String lpClassName, String lpWindowName); [DllImport(“coredll.dll”)] internal static extern bool EnableWindow(IntPtr hwnd, Boolean bEnable); [DllImport(“coredll.dll”)] private static extern […]

WebService添加布尔参数时消耗的WCF?

我在VS2008中创建了默认的WCF服务。 它被称为“Service1” public class Service1 : IService1 { public string GetData( int value ) { return string.Format(“You entered: {0}”, value); } public CompositeType GetDataUsingDataContract( CompositeType composite ) { if ( composite.BoolValue ) { composite.StringValue += “Suffix”; } return composite; } } 它工作正常,接口是IService1: [ServiceContract] public interface IService1 { [OperationContract] string GetData( int value ); [OperationContract] CompositeType […]

如何从命令行构建一个.csproj,并将日志写入指定位置?

虽然’no-log’版本似乎可以顺利运行 “c:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ ide \ VCSExpress”Project1.csproj / build 以下失败: “c:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ ide \ VCSExpress”Project1.csproj / build /Log=log.txt 显示带有此文本的窗口: 缺少开关参数。 / build开关所需的配置名称。 使用:vcsexpress [solutionfile | projectfile | anyfile.ext] [开关] vcsexpress的第一个参数通常是解决方案文件或项目文件。 如果要在编辑器中自动打开文件,也可以使用任何其他文件作为第一个参数。 当您输入项目文件时,IDE将查找与项目文件的父目录中的项目文件具有相同基本名称的.sln文件。 如果不存在此类.sln文件,则IDE将查找引用该项目的单个.sln文件。 如果不存在这样的单个.sln文件,则IDE将创建一个未保存的解决方案,其默认的.sln文件名与项目文件具有相同的基本名称。 命令行构建:vcsexpress solutionfile.sln / build […]

检测应用程序的另一个实例是否已在运行

如果已经有实例运行,我的应用程序在加载时需要表现得略有不同。 我理解如何使用互斥锁来防止其他实例加载,但这并不能完全解决我的问题。 例如: 实例1加载,获取互斥锁。 实例2加载,无法获取互斥锁,知道还有另一个实例。 到现在为止还挺好。 实例1关闭,释放互斥锁。 实例3加载,获取互斥锁,不知道实例2仍在运行。 有任何想法吗? 值得庆幸的是,它不需要处理多个用户帐户或类似的东西。 (C#,桌面应用程序) 编辑:为了澄清,应用程序不需要限制为单个实例,只是在已经运行另一个实例时执行稍微不同的启动操作。 多个实例都很好(并且是预期的)。