我有兴趣安装.NET 4.5。 但是我听说这是一个就地升级。 由于我公司的用户使用Windows XP。 我无法发布任何使用.NET 4.5的客户端应用程序。 我知道我可以定位.net 4.0,当我编码,但是,如果我安装.net 4.5,在我的机器上运行的东西的风险将无法在Windows XP机器上(只有.net 4.0)? (顺便说一下,我看了,但没有看到这个问题,如果有问题,请指出我,我会试着删除这个问题。)
我正在使用.NET4.5和VS2013,我有这个查询从数据库获取dynamic结果。 dynamic topAgents = this._dataContext.Sql( "select t.create_user_id as \"User\", sum(t.netamount) as \"Amount\" from transactiondetail t where t.update_date > sysdate -7 group by t.create_user_id") .QueryMany<dynamic>(); 以下语句失败,编译错误Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type ,甚至不允许我运行它 topAgents.ToList().Select(agent => new { User = […]
我最近开始使用NuGet来pipe理外部软件包。 现在我只需要它的NLog。 一切工作正常,当我在VS 2012中生成项目。但是,我尝试作为一个CI服务器的TeamCity(我是相当新的CI),它给了我以下错误: [Csc] SomeNamespace\SomeClass.cs(10, 7): error CS0246: The type or namespace name 'NLog' could not be found (are you missing a using directive or an assembly reference?) (这个错误在我使用NLog的地方都会重复) 现在我没有在SVN中包含'packages /'文件夹,因为我认为不包括二进制文件是一个很好的做法,并让TeamCity中的MSBuild自行下载。 但显然不是这样做的。 我在SVN中包含'packages.xml'文件。 我可以检查什么是错误的? 更新感谢@DavidBrabant我被推向了正确的方向。 但是,我现在在TeamCity中出现以下错误: Package restore is disabled by default. To give consent, open the Visual Studio Options dialog, click on Package […]
简洁版本: C#代码 typeof(string).GetField("Empty").SetValue(null, "Hello world!"); Console.WriteLine(string.Empty); 编译运行时,输出"Hello world!" 在.NET 4.0和更低版本下,但在.NET 4.5和.NET 4.5.1下给出了"" 。 如何可以忽略写入字段,或谁重置此字段? 更长的版本: 我从来没有真正理解为什么string.Empty字段(也称为[mscorlib]System.String::Empty )不是const (又名literal ),请参阅“ 为什么不是String.Empty常量? ”。 这意味着,例如,在C#中我们不能在以下情况下使用string.Empty : 在case string.Empty:的switch语句中case string.Empty: 作为可选参数的默认值,如void M(string x = string.Empty) { } 应用属性时,如[SomeAttribute(string.Empty)] 其他需要编译时常量的情况 这对有关是否使用string.Empty或""的众所周知的“宗教战争”有影响,请参阅“ 在C#中,我应该使用string.Empty还是String.Empty或”“来intitialize一个string? 几年前,我通过反思将Empty设置为其他string实例,并且看到BCL中有多less部分开始因为它而奇怪地行为。 这是相当多的。 Empty引用的变化似乎在应用程序的整个生命周期中一直存在。 现在,有一天我试着重复那个小小的特技,但是后来使用了一个.NET 4.5的机器,我不能再这样做了。 (注意!如果你的机器上有.NET 4.5,可能你的PowerShell仍然使用旧版本的.NET,所以试试copy- [String].GetField("Empty").SetValue($null, "Hello world!")到PowerShell中以查看更改此引用的一些效果。) 当我试图寻找这个原因时,我偶然发现了一个有趣的线程“ .NET 4.5 beta中这个FatalExecutionEngineError的原因是什么? ”。 在这个问题的接受答案中,是否注意到通过4.0版本, System.String有一个静态构造函数.cctor ,其中设置了Empty字段(在C#源代码中,当然可能只是字段初始值设定项)而在4.5中不存在静态构造函数。 […]
我有一个在.NET 4.0和VS2010中使用C#的.NET项目。 我想要做的是添加一些asynchronous重载到我的库,以使用.NET Framework 4.5中的用户使用await关键字更轻松地进行asynchronous编程。 现在被重载的方法是非asynchronous的。 另外我不想自己使用任何asynchronous方法,只是创build新的并使其可用。 在.NET 4.0和VS2010中创buildasynchronous方法是可能的,如果是这样,.NET 4.0asynchronous方法应该是什么样子? 因为我正在使用VS2010,所以我无法访问“async”关键字,因此需要在.NET 4.0中模拟这种行为。 例如,它是否需要返回任何特定的types,并且是否需要在该方法内部发生任何代码,以使它正在调用的当前非asynchronous代码asynchronous发生?
在.NET 4.5 / C#5中, IReadOnlyCollection<T>用Count属性声明: public interface IReadOnlyCollection<out T> : IEnumerable<T>, IEnumerable { int Count { get; } } 我想知道,对于ICollection<T>实现IReadOnlyCollection<T>接口是否有意义: public interface ICollection<T> : IEnumerable<T>, IEnumerable, *IReadOnlyCollection<T>* 这意味着实现ICollection<T>将自动实现IReadOnlyCollection<T> 。 这听起来对我来说很合理。 ICollection<T>抽象可以看作是IReadOnlyCollection<T>抽象的扩展。 请注意, List<T> ,例如,同时实现ICollection<T>和IReadOnlyCollection<T> 。 然而它并没有被devise成这样。 我在这里错过了什么? 为什么会select当前的实施呢? UPDATE 我正在寻找一个使用面向对象devise推理来解释原因的答案: 实现IReadOnlyCollection<T> 和 ICollection<T>具体类如List<T> ICollection<T> 是比以下更好的devise: ICollection<T> IReadOnlyCollection<T>直接实现IReadOnlyCollection<T> 还请注意,这基本上是一样的问题: 为什么IList<T>实现IReadOnlyList<T> ? 为什么不IDictionary<T>实现IReadOnlyDictionary<T> ?
由于使用Visual Studio 2012 RC,因此在剃刀视图中使用可移植类库(.net 4.5&metroconfiguration文件)中的类时,会出现HttpCompileException。 例外:(德语翻译成英文,对不起) System.Web.HttpCompileException (0x80004005): c:\Users\user\AppData\Local\Temp\Temporary ASP.NET Files\root\1995167a\126b7c4d\App_Web_index.cshtml.1fbcdbb1.zaniprm5.0.cs(29): error CS0012: The type 'System.Object' is not in a referenced assembly is defined. Add a reference to the Assembly "System.Runtime, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" added. at System.Web.Compilation.AssemblyBuilder.Compile() System.Web.Compilation.BuildProvidersCompiler.PerformBuild() System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) … 解决scheme结构 可移植类库(.net 4.5&metro profile) 公共类User {…} MVC 4(.net […]
我一直在.NET 3.5应用程序中使用SqlDependency超过3年没有任何问题。 情况如下: 用SqlDependency观察一个表的中央窗口服务(让我们称之为表A) 多个用户使用WPF应用程序和每个用户观看一个表的唯一SqlDependency (表A再次) 用户在表A中排队处理一个工作单元 SqlDependency触发Windows服务 Windows服务处理表A中的所有未完成项目,并将结果保存到表A中 唯一的SqlDependency触发结果可用的每个用户 用户处理他们的工作 最近,我将系统升级到了.NET 4.5,并开始发现将更改放入正在监视的表中的问题,但SqlDependency永远不会触发(在服务和用户应用程序中)。 我开始进一步深入研究,并在日志中注意到,在某些时候,我将重新注册SqlDependency ,但是之后通知将永远不会触发。 看到这个行为之后,我决定运行SQL服务器上的分析器来捕获订阅事件。 从捕获的数据中,我注意到有时订阅将被一个用户注册(具有唯一的ID),但是然后它将被另一个用户触发(具有相同的唯一ID)。 这通常发生在我上面提到的服务以及WPF应用程序的一个或多个用户。 (我已经在探查器结果中附加了问题的截图) 这是预期的行为? 是否可以为不同的用户发起通知? 这是否指向应用程序层中的问题? 任何帮助表示赞赏。
我正在通过.NET的HttpClient调用服务来解决一个错误,尝试通过本地代理(Fiddler)路由请求,但是我的代理设置似乎没有生效。 以下是我如何创build客户端: private HttpClient CreateHttpClient(CommandContext ctx, string sid) { var cookies = new CookieContainer(); var handler = new HttpClientHandler { CookieContainer = cookies, UseCookies = true, UseDefaultCredentials = false, Proxy = new WebProxy("http://localhost:8888", false, new string[]{}), UseProxy = true, }; // snip out some irrelevant setting of authentication cookies var client = new HttpClient(handler) { […]
我想在TeamCity中构build一个.net 4.5 / VS2012解决scheme。 我的构build工作在安装了VS2012的代理上,但是在没有VS2012的代理上,我收到如下警告: C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(983,5):警告MSB3644:未find框架“.NETFramework,版本= v4.5”的引用程序集。 要解决此问题,请为此框架版本安装SDK或定位包,或者将您的应用程序redirect到您安装了SDK或定位包的框架版本。 请注意,程序集将从全局程序集caching(GAC)中parsing出来,并将用于代替引用程序集。 因此,您的程序集可能无法正确定位您想要的框架。 我可以安装目标而不安装所有的Visual Studio 2012,就像我可以使用.NET 4.0一样吗? 下载在哪里? (我觉得这个问题太可笑了…但是我已经search过了!诚实的! 这个网站表明它只适用于VS2012,这看起来像是疯狂。)