小编Ear*_*rlz的帖子

如何控制.Net在命名空间冲突中选择哪个程序集?

我需要(忍受我)由于某种原因使用WinRT版本的System.Text.Encoding命名空间.我可以手动添加对程序集的引用,但它仍将使用mscorlib的实现.我显然无法完全删除mscorlib.

如何强制我的项目使用WinRT的System.Text.Encoding.dll而不是mscorlib?

基本上,我需要它来生成这块IL:

call class [System.Text.Encoding]System.Text.Encoding [System.Text.Encoding]System.Text.Encoding::get_UTF8()
Run Code Online (Sandbox Code Playgroud)

而不是这个:

call class [mscorlib]System.Text.Encoding [mscorlib]System.Text.Encoding::get_UTF8()
Run Code Online (Sandbox Code Playgroud)

.net c# il conflict namespaces

6
推荐指数
1
解决办法
1352
查看次数

为什么Forth使用IF语句THEN ...而不是ENDIF?

为什么Forth使用IF语句THEN ...而不是ENDIF?

我正在实现一个(不符合的)Forth编译器的东西.基本上,对于IF语句,Forth的语法对我来说非常直观.

IF ."Statement is true"
ELSE ."Statement is not true"
THEN ."Printed no matter what;
Run Code Online (Sandbox Code Playgroud)

为什么结尾语句是THEN?这使得语言对我来说非常奇怪.对于我的编译器,我正在考虑将其更改ENDIF为更自然的内容.但是,首先归还IF-THEN语句的理由是什么?

history language-design forth

6
推荐指数
1
解决办法
2212
查看次数

为什么这个.Net IL无法验证?

我有一些我写的自定义IL,它不会通过PEVerify.我得到的错误是

$ peverify foo.exe

Microsoft (R) .NET Framework PE Verifier.  Version  4.0.30319.17929
Copyright (c) Microsoft Corporation.  All rights reserved.

[IL]: Error: [Z:\virtualbox_shared\foo.exe : HelloWorld.Program::Main][offset 0x00000021] Stack height at all points must be determinable in a single forward scan of IL.
1 Error(s) Verifying foo.exe

然而,该程序将运行正常,没有任何例外.以下是相关方法的IL:

.method private static hidebysig
  default void Main (string[] args)  cil managed
{
// Method begins at RVA 0x2050
.entrypoint
// Code size 54 (0x36)
.maxstack 2

//custom IL
ldc.i4 1
ldc.i4 1
ceq
switch(first, second) …
Run Code Online (Sandbox Code Playgroud)

.net verification il peverify

6
推荐指数
1
解决办法
464
查看次数

分裂上帝对象的接口继承?

我在一个相当大的产品上工作.它一直处于开发阶段,因为.Net 1.0仍然是一个正在进行中的工作,所以它有很多质量不好的代码,并没有考虑单元测试.现在我们正在尝试提高质量并实现每个功能和错误修复的测试.我们现在遇到的最大问题之一是依赖地狱和上帝的对象.特别是有一个上帝对象是坏的:Session.基本上,与该程序的当前会话相关的任何内容都在此对象中.还有一些其他神物.

无论如何,我们通过使用Resharper从它们中提取界面,使这个神对象"可模仿".但是,这仍然使测试变得困难,因为大多数时候你必须查看你编写的代码,以找出真正需要在100种不同方法和特性中嘲笑的内容.

仅仅拆分这个类是不可能的,因为这个类有数百甚至数千个引用.

因为我有一个接口(几乎所有的代码都经过重构才能使用接口),但我有一个有趣的想法.如果我使ISession接口继承自其他接口,该怎么办?

例如,如果我们有这样的事情:

interface IBar
{
  string Baz{get;set;}
}

interface IFoo
{
  string Biz{get;set;}
}

interface ISession: IFoo, IBar
{
}
Run Code Online (Sandbox Code Playgroud)

这样,不必更新使用ISession的现有代码,也不必更新实际实现.但是,在我们编写和重构的新代码中,我们可以使用更细粒度的IFoo或IBar接口,但是传入一个ISession.

最终,我认为这可能更容易最终分解实际的ISession和Session上帝接口/对象

现在给你.这是对这些上帝物体进行测试并最终将其分解的好方法吗?这是一种记录在案的方法和/或设计模式吗?你做过这样的事吗?

c# refactoring unit-testing interface god-object

6
推荐指数
1
解决办法
460
查看次数

Windows Phone 8的IsolatedStorageFile或Windows.Storage API?

我正在为Windows Phone 8开发一个幕后库.我们需要将文件系统用作原始缓存.我发现Windows Phone 8有两个API.从Windows Phone 7继承了典型的IsolatedStorageFile API.但是,现在还有一些新的Windows.Storage.ApplicationData API,我假设这些API是从WinRT传送的.

我应该使用哪一个?有什么区别,我为什么要使用其中一个?另外,他们如何互动?如果我在IsolatedStorage中创建一个文件,我可以在Windows.Storage中看到它吗?

c# file-io isolatedstorage windows-runtime windows-phone-8

6
推荐指数
1
解决办法
437
查看次数

是否有任何关于"XBF"二进制XAML格式的文档?

在Build,宣布将编译Xaml.这对我的工作影响很大.我们在Appx包中读取和修改XAML文件.所以,我下载了预览并制作了一个快速的示例应用程序,实际上,看不到XAML文件.相反,我.xbf为每个XAML页面都有这个奇怪的文件.使用十六进制编辑器,我可以看到熟悉的东西,如XAML的XML命名空间,但这似乎不像BAML,所以基本上没有它的文档.一种全新的格式.

有没有(或将要)微软发布关于这种新的二进制XAML格式的某种形式的文档?

xaml windows-runtime windows-store-apps windows-8.1

6
推荐指数
1
解决办法
3464
查看次数

使用Xamarin调试"远程"Android设备?

所以我需要用Xamarin Android做一些调试.如果模拟器不是那么慢,这不会是一个问题.所以,我看了如何设置x86模拟器,但因为我在VMWare中运行Xamarin(主机是Linux),这是行不通的.我最好的办法是安装x86加速的android,或者从我的主机上使用类似Android-x86的东西.

我怎么能让Xamarin连接到不在同一台机器上运行的设备呢?

virtualization vmware android xamarin.android xamarin

6
推荐指数
1
解决办法
7709
查看次数

如何让Visual Studio中的git不再占用35%的CPU?

有一段时间了,我一直看到Visual Studio 2013的git支持不断消耗大量的CPU.我试过Mark Rendle的方法来禁用git.有一次,删除所有git支持的注册表项工作完美.但是,从更新2开始,此方法不再有效.我也尝试了他的扩展,但它没有帮助.

我知道它与git有关,因为我在Visual Studio上运行了一个分析器,结果很清楚.

在此输入图像描述

每次保存文件时,我都会得到30-60秒的CPU使用率峰值.在编辑代码时,这很常见.如果我同时打开其他Visual Studio实例,其他实例也会看到类似的CPU峰值.因此,当打开4个Visual Studio实例时,我会在组合所有实例时看到完全100%的CPU使用率.这非常烦人,并使Visual Studio边界在某些方面无法使用

是否有一种解决方法可以在Visual Studio 2013中真正禁用git支持?

git visual-studio-2013

6
推荐指数
1
解决办法
666
查看次数

CLion 仅显示调试器中的结果类型,而不显示实际值

所以我在很多地方都遇到这个问题,包括手表,但对于评估表达来说尤其烦人。基本上,CLion 成功地评估了表达式,发现它返回了结果,显示了结果的类型,但实际上并没有向我显示值。我是否缺少一些神奇的命令来实际查看其值?我可以看看是否切换到 lldb 而不是 gdb,但 lldb 有它自己的一系列问题,包括表达式求值在大多数情况下根本不起作用。 在此输入图像描述

c++ debugging gdb clion

6
推荐指数
1
解决办法
817
查看次数

为什么Vista上的Java报告它是在XP上?

我偶然发现了一些令人费解的事情System.getProperty("os.name").根据关于此事的Java漏洞Java 5发行说明(搜索"os.name"),Java中存在一个早期"longhorn"版本的Vista中的错误,应该已在v5版本10中修复.

但是在我的Vista SP1盒子上 - 使用v5版本15和v6版本6 - System.getProperty("os.name")返回"Windows XP".进一步System.getProperty("os.version")返回"5.1".但是,我无法通过Google找到与此问题相关的任何内容.这让我想知道我的Vista设置是否有些奇怪.我试过从测试C程序调用GetVersionEx()API函数,它返回主要版本6,次要0(正如我期望的Vista安装).

有没有其他人遇到这个问题,知道修复或有任何建议我如何解决它而不使用JNI?

java windows-vista

5
推荐指数
1
解决办法
972
查看次数