Tag: visual studio

有没有办法在Visual Studio项目中进行用户特定的前/后构建事件?

我目前正在我的项目中使用post build事件将我的程序集复制到另一个目录以进行调试。 这是我的机器本地的,仅用于调试目的,所以我更喜欢将它放在* .csproj.user文件而不是* .csproj文件中。 我尝试将负责的元素从* .csproj复制到* .csproj.user ,但这不起作用。 编辑为了澄清,我不想将用户特定的命令放在* .csproj文件中的post-build事件中。 相反,我想将post-build事件命令放在* .csproj.user文件中。 (从答案到目前为止,这看起来不可能) 为了提供更多上下文,它不是项目参考。 我将我的程序集复制到运行时加载程序集的应用程序的目录。 (想想插件)

为什么“如果更新则复制”在文件更新时不复制文件?

我在Visual Studio Express中有一个如下所示的解决方案: C#中的LogicSchema类,它将在运行时解析指定的XML文件。 以下是Program.cs的main方法: LogicSchema ls = new LogicSchema( XDocument.Load( “schemas\\C#Schema.xml”, LoadOptions.PreserveWhitespace)); 我在我的解决方案中创建了一个名为“schemas”的文件夹,用于保存XML文件并将Build Action设置为Content ,并将“Copy to Output Directory”值设置为Copy for new 。 我的期望是,如果在记事本中打开文件,进行更改并保存,当我按F5时,XML文件的更新版本将被复制到输出目录(在本例中为bin \ debug)。 但是,除非我选择Rebuild,否则更新的文件不会复制到输出目录。 常规构建不起作用。 我需要更改什么,以便当我按F5时,文件在更新时被复制到输出目录?

可重复在不同的机器上使用相同的C#源代码构建

我正在尝试生成一个足够智能的工具,以编程方式检查由在不同时间在两个单独的机器上编译的相同C#代码生成的发行版本二进制文件,并得出结论,代码是相同的,同时能够获取任何代码更改(如果存在于用于生成这些二进制文件的c#代码。 我尝试过使用多种方法,但为了保持这种简短,我只会坚持最新的尝试。 我在二进制文件上使用/ text选项运行ildasm并在文本中替换匿名字段等的GUID,但是当二进制文件来自不同的pc时,我发现ILDASM / text选项生成的文本被重新排序。 源自相同代码但在不同机器上通过相同设置编译的二进制文件也出现严重重新排序。 任何建议如何能够控制IL的重新排序将不胜感激? 干杯 PS:任何可靠地实现这一目标的替代策略也是最受欢迎的。

C#如何将CDROM的驱动器号从D:更改为Z:

我正在尝试编写一个将CDROM驱动器从字母D更改为字母Z并且与WMI没有任何运气的方法。 有没有其他方法可以使用C#做到这一点? public void setVolCDROM() { SelectQuery queryCDROM = new SelectQuery(“SELECT * FROM Win32_cdromdrive”); ManagementObjectSearcher searcherCDROM = new ManagementObjectSearcher(queryCDROM); foreach(ManagementObject cdromLetter in searcherCDROM.Get()) { MessageBox.Show(cdromLetter[“Drive”].ToString() + “\n” + cdromLetter[“Manufacturer”].ToString()); if (cdromLetter[“Drive”].ToString() == “D:”) { cdromLetter[“Drive”] = “Z:”; cdromLetter.Put(); } } }

使用cshtml的Visual Studio 2013 Autoformat(CTRL KD)小写问题

我刚刚更新到VS 2013,当使用MVC 3应用程序时,我遇到了一个自动格式化问题,当使用CTRL K + D快捷键(或突出显示)时,cshtml文件顶部的模型声明设置为小写所有,格式选择)例如 @model IEnumerable CTRL K + D. @model IEnumerable VS 2012中的相同项目完全正常并且自动格式化工作,所以我尝试导出这些设置并导入它们但没有任何运气。 我已经尝试查看工具 – 选项 – 文本编辑器并将html Web表单中的客户端标记更改为“已输入”,但这也没有奏效。

为什么不同版本的Visual Studio会输出相同代码的不同结果?

我使用.NET 4 ( 不是.NET 4.5或任何其他版本的框架!) 为什么不同版本的Visual Studio将使用SAME .NET Framework输出相同代码的不同结果? 我有以下内容 static void Main(string[] args) { var values = new List() { 1, 2, 3, 4, 5 }; var funcs = new List<Func>(); foreach (var v in values) { funcs.Add(() => v * 10); } foreach (var f in funcs) { Console.WriteLine(f()); } Console.ReadKey(); } 在Visual […]

取消测试后清理

我目前正在通过visual studio进行测试。 在运行所有测试之前,我会自动创建一组具有已知凭据的用户,并在运行结束时删除这些用户。 但是,有时我需要在中途取消我的测试。 在这些情况下,测试永远不会有机会进行清理,这意味着测试运行中遗留了虚假的用户信息,并可能导致下一次测试运行崩溃(当它尝试将用户信息添加到数据库中时)。 无论如何,即使测试被取消,还是强制visual studio / mstest运行清理方法? 我知道一个选项是进行测试检查并确保用户信息不存在,如果确实在创建新用户之前删除了它。 但这仍然无法解决取消测试运行的问题,从而留下不需要的测试数据。 更新: 对于错误传达很抱歉,但是在测试开始时清理数据不是一种选择。 我给出了一个非常简单的问题视图,但简单地说,我没有简单的方法来确保在测试开始时不存在测试数据。 所有清理工作必须在测试结束时进行。

如何在一个解决方案中调试/unit testingwebAPi

有没有办法在一个vs解决方案中进行unit testing或调试web api? 我正在使用HttpClient来使用WebAPI并且有两个VS实例来执行此操作。 在1 VS实例中我有unit testing,在第二个vs实例中我有在localhost中运行的webapi。 有一个更好的方法吗? unit testing的首选方法是引用WebAPI项目吗? 我想使用httpClient来使用它,而不必在UnitTest项目中引用它。 所以在我的UnitTest方法中,它的baseAddress为“ http:// localhost:1234 ” 这将是托管从同一解决方案启动的WebAPI的地方。 我正在调试的当前方式要求我启动第二个Visual Studio实例,其中加载了相同的解决方案并且有一个运行WebAPI项目,而另一个Visual Studio运行unit testing项目。

T4预处理模板调试不起作用 – Visual Studio 2010 RTM

我正在尝试调试预处理的T4模板,我无法进入通过运行预处理模板创建的类。 我能够创建一个类的实例,但是一旦我尝试在调试时进入,就会弹出一个新窗口 没有可用的来源。 当前位置没有可用的源代码。 我的理解是预处理模板可以像普通的c#类一样调试,这不正确吗? 为了能够进入由预处理模板定义的类,您需要做些什么吗? 这是一个非常简单的模板和我遇到问题的调用代码: TestPreprocessedTemplate.tt: Hello 测试代码: var template = new TestPreprocessedTemplate(); string test = template.TransformText(); 编辑 – 根据下面的建议添加了debug =“true”语句,仍然有同样的问题。 更新 – 我也在MSDN论坛上发布了这个问题,并收到了MS员工的回复,表明我上面描述的内容应该确实有效。 还有其他人遇到过这个问题吗? 更新 – 在MSDN论坛的帮助下,看起来问题在于将#line指令添加到生成的c#类中。 评论它们允许我按预期逐步执行代码。 有没有办法阻止将这些指令添加到生成的类中? 使用ASP.NET页面,您可以添加LinePragmas =“false”参数,但这似乎对T4模板没有任何影响。 有任何想法吗?

如何获取为引用的C#库显示的XML文档?

假设你有一个带有多个函数的C#库,所有文档都记录了通常的/// 。 引用该项目将使函数和参数描述出现在Visual Studio上下文帮助中。 但是,如果你没有引用项目本身,只是一个构建(以及可能还有一些其他文件里面的文件),是否有可能有这个节目?