小编Phi*_*ght的帖子

VS2008安装项目在安装时总是需要.NET 3.5,但我不需要它!

1,创建并构建默认的Windows窗体项目并查看项目属性.它说该项目的目标是.NET Framework 2.0.

2,创建一个安装项目,只安装Windows窗体项目中的单个可执行文件.

3,运行该安装程序,它总是说它需要在机器上安装.NET 3.5 SP1.但它显然只需要2.0,所以我不希望客户在不需要时安装.NET 3.5.他们可能已经安装了2.0,因此强制升级是不可取的!

我已经查看了安装项目的先决条件并检查了.NET Framework 2.0条目,其余的都未选中.所以我找不到这个奇怪的运行时要求的任何原因.有谁知道如何解决这个问题?

installation .net-3.5 .net-2.0

11
推荐指数
1
解决办法
6064
查看次数

当人们谈论使用"分片"扩展网站时,它们意味着什么?

关于解决大型网站的扩展问题,我听过几次提到的"碎片"技术.什么是'碎片'技术,为什么这么好?

database scalability sharding

11
推荐指数
1
解决办法
795
查看次数

Visual Studio编辑JSX

我正在使用Visual Studio 2013构建一个使用React和JSX作为用户界面的网站.这一切都运行正常,但由于.jsx文件被视为纯文本,因此开发环境较慢.所以没有语法高亮,你不能设置断点来帮助调试.

有没有办法改善这种体验,还是我必须切换到jsx文件的另一个编辑器?

visual-studio reactjs react-jsx

11
推荐指数
1
解决办法
9373
查看次数

LINQ to Objects和改进的带有索引的perf?

我正在使用LINQ to Objects,并想知道是否可以通过使用我拥有的索引来提高查询的性能.最好用一个例子来解释.想象一个简单的类型......

public class Person
{
    public int Age;
    public string FirstName;
    public string LastName;
}
Run Code Online (Sandbox Code Playgroud)

一个简单的查询我会反对它...

List<Person> people = new List<Person>();

// 'people' populated with 50,000 instances...

var x = from t in people
        where t.Age > 18 && t.Age < 21
        select t;
Run Code Online (Sandbox Code Playgroud)

如果我正确理解LINQ to Objects,那么Where扩展方法的实现将枚举people集合中的所有50,000个实例,以便找到实际匹配的100个实例.碰巧我已经有一个按年龄排序的人员集合的索引.像这样...

SortedList<int, Person> ageSorted = new SortedList<int, Person>();
Run Code Online (Sandbox Code Playgroud)

很明显,如果我可以获得在哪里使用SortedList以便它不再需要枚举所有50,000个实例,而是找到100个匹配条目的范围,从而节省时间.

是否可以将LINQ扩展到Objects来实现我的情况?它已经可以但我错过了这项技术吗?

c# indexing linq-to-objects

9
推荐指数
2
解决办法
2267
查看次数

如何在同时运行这两个语句时阻止EntityFramework死锁

调用我的Web服务使用以下代码以确保调用者具有有效的会话.如果找到有效会话,则会更新会话详细信息并保存更改.一切都很简单,工作正常.

// Create the Entity Framework context
using(MyContext ctx = CreateMyContext())
{
     // Get the user session for the client session         
     UserSession session = (from us in context.UserSessions.Include("UserEntity")
                            where us.SessionId = callerSessionId
                            select us).FirstOrDefault<UserSession>();

     if (session == null)
         return false;
     else
     {
         // Update session details
         session.Calls++;
         session.LastAccessed = DateTime.Now.Ticks;
         Console.WriteLine("Call by User:{0}", session.UserEntity.Name);

         // Save session changes back to the server
         ctx.SaveChanges();
         return true;
     }    
}
Run Code Online (Sandbox Code Playgroud)

一切正常,直到相同的调用者,因此相同的会话,进行多个并发调用(这是完全有效的).在这种情况下,我有时会遇到僵局.使用SQL Server Profiler我可以看到发生以下情况.

呼叫者A执行选择并获取用户会话上的共享锁.呼叫者B执行选择并在同一用户会话上获取共享锁.由于来电者B的共享锁定,来电者A无法执行更新.由于呼叫者A的共享锁,呼叫者B无法执行其更新.僵局.

这似乎是一个简单而经典的死锁场景,必须有一个简单的方法来解决它.当然,几乎所有真实世界的应用程序都有同样的问题.但是我没有提到任何有关死锁的实体框架书籍.

c# deadlock entity-framework

9
推荐指数
1
解决办法
1万
查看次数

是否有在Windows Azure上运行的CMS系统?

我希望使用Windows Azure和SQL Azure构建一个新网站.有没有人知道我可以用作Web角色的任何商业或免费CMS系统,它们将连接并使用SQL Azure作为存储?

azure content-management-system azure-sql-database

8
推荐指数
2
解决办法
1万
查看次数

在另一个线程中抛出异常时未调用UnhandledException

根据Microsoft文档,当线程(来自线程池或使用System.Threading.Thread类创建)发生未处理的异常时,应触发AppDomain.UnhandledException事件以获取应用程序的默认AppDomain.这是MSDN 链接,它在第二个注释部分之后解释它.

但我无法重现这种行为,据我所知,从我的测试应用程序中它永远不会在默认的AppDomain或用于创建线程的AppDomain上触发UnhandledException.文档是错的还是我的测试代码?

using System;
using System.Runtime.ExceptionServices;
using System.Reflection;

public class Program
{
    static void Main()
    {
        Program.HookAppDomainExceptions();
        Test t = CreateTestInsideAppDomain("Nested1");
        t.SetupNested1();
        Console.ReadLine();
    }

    public static Test CreateTestInsideAppDomain(string appDomainName)
    {
        AppDomain nested1 = AppDomain.CreateDomain(appDomainName);
        string executingName = Assembly.GetExecutingAssembly().FullName;
        return (Test)nested1.CreateInstanceAndUnwrap(executingName, "Test");
    }

    public static void HookAppDomainExceptions()
    {
        AppDomain.CurrentDomain.FirstChanceException +=
            new EventHandler<FirstChanceExceptionEventArgs>(FirstChanceException);

        AppDomain.CurrentDomain.UnhandledException +=
            new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    }

    public static void FirstChanceException(object sender, FirstChanceExceptionEventArgs e)
    {
        Console.WriteLine("Domain:{0} FirstChanceException Handler",
                          AppDomain.CurrentDomain.FriendlyName);
    }

    public static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        Console.WriteLine("Domain:{0} …
Run Code Online (Sandbox Code Playgroud)

c# clr exception .net-4.0

8
推荐指数
1
解决办法
2638
查看次数

.NET ExecutionContext如何实际工作?

我试图发现ExecutionContext如何在.NET Framework 4.0及更高版本中实际工作.文档说当使用Thread.Start和大多数线程池操作时,托管原则,同步,区域设置和用户上下文都流向新线程.但我不能在实践中看到这一点.

这是一个简单的控制台应用程序,用于测试启动新线程时同步上下文和托管原则是否流动...

    static void Main(string[] args)
    {
        SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
        Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("One"), null);

        Thread t1 = new Thread(new ThreadStart(ThreadRun));
        t1.Start();
        t1.Join();

        SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
        Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("Two"), null);

        AsyncFlowControl aFC = ExecutionContext.SuppressFlow();
        Thread t2 = new Thread(new ThreadStart(ThreadRun));
        t2.Start();
        t2.Join();
        aFC.Undo();

        Console.Read();
    }

    static void ThreadRun()
    {
        Console.WriteLine("ThreadRun Id={0} Context={1} Principle={2}", 
            Thread.CurrentThread.ManagedThreadId, 
            (SynchronizationContext.Current != null), 
            Thread.CurrentPrincipal.Identity.Name);
    }
Run Code Online (Sandbox Code Playgroud)

结果是......

    ThreadRun Id=11 Context=False Principle=One
    ThreadRun Id=12 Context=False Principle=Two
Run Code Online (Sandbox Code Playgroud)

因此,同步上下文永远不会流动,并且即使在您指定它时,托管原则也始终会流动.基本上文档是完全错误的.那么是否描述了ExecutionContext在现实中的作用以及它为何有用?

.net multithreading executioncontext

7
推荐指数
1
解决办法
3427
查看次数

WPF - 如何以编程方式将对象实现为可视内容?

将对象分配给Content控件时,它将实现适合该已分配对象的Visual.有没有一种程序化的方法来实现相同的结果?我想在WPF中使用一个对象调用一个函数并返回一个Visual,其中在生成Visual时应用相同的逻辑,就像您已将对象提供给Content控件实例一样.

例如,如果我有一个POCO对象并将其分配给Content控件并且恰好定义了相应的DataTemplate,那么它将实现该模板以创建Visual.我希望我的代码能够获取POCO对象并从WPF中获取Visual.

有任何想法吗?

wpf contentpresenter contentcontrol

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

用于.NET的64位系统的原子读/写大小?

C#规范说,对于32位类型和更小的(以及参考),读取和写入是原子的.因此,如果我的类中有一个Int32字段,我知道多个线程可以读取和写入它,并且它们将在运行中处于原子状态,因此值始终是一致的(尽管缓存问题是一个潜在的问题,但这不是重点这个问题).

在64位系统上也是如此吗?如果我为64位编译我的应用程序是否意味着Int64仍然被认为不是原子的?或者我现在可以认为Int64在读/写中是原子的,因为它是在64位系统上编译并运行的吗?

.net c# 64-bit

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