我需要(忍受我)由于某种原因使用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) 为什么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语句的理由是什么?
我有一些我写的自定义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 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上帝接口/对象
现在给你.这是对这些上帝物体进行测试并最终将其分解的好方法吗?这是一种记录在案的方法和/或设计模式吗?你做过这样的事吗?
我正在为Windows Phone 8开发一个幕后库.我们需要将文件系统用作原始缓存.我发现Windows Phone 8有两个API.从Windows Phone 7继承了典型的IsolatedStorageFile API.但是,现在还有一些新的Windows.Storage.ApplicationData API,我假设这些API是从WinRT传送的.
我应该使用哪一个?有什么区别,我为什么要使用其中一个?另外,他们如何互动?如果我在IsolatedStorage中创建一个文件,我可以在Windows.Storage中看到它吗?
在Build,宣布将编译Xaml.这对我的工作影响很大.我们在Appx包中读取和修改XAML文件.所以,我下载了预览并制作了一个快速的示例应用程序,实际上,看不到XAML文件.相反,我.xbf为每个XAML页面都有这个奇怪的文件.使用十六进制编辑器,我可以看到熟悉的东西,如XAML的XML命名空间,但这似乎不像BAML,所以基本上没有它的文档.一种全新的格式.
有没有(或将要)微软发布关于这种新的二进制XAML格式的某种形式的文档?
所以我需要用Xamarin Android做一些调试.如果模拟器不是那么慢,这不会是一个问题.所以,我看了如何设置x86模拟器,但因为我在VMWare中运行Xamarin(主机是Linux),这是行不通的.我最好的办法是安装x86加速的android,或者从我的主机上使用类似Android-x86的东西.
我怎么能让Xamarin连接到不在同一台机器上运行的设备呢?
有一段时间了,我一直看到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支持?
我偶然发现了一些令人费解的事情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?
c# ×3
.net ×2
il ×2
android ×1
c++ ×1
clion ×1
conflict ×1
debugging ×1
file-io ×1
forth ×1
gdb ×1
git ×1
god-object ×1
history ×1
interface ×1
java ×1
namespaces ×1
peverify ×1
refactoring ×1
unit-testing ×1
verification ×1
vmware ×1
windows-8.1 ×1
xamarin ×1
xaml ×1