小编Eri*_*let的帖子

VS2015 Update 2消息:"检测到内存不足.此解决方案禁用完整解决方案分析."

我刚刚使用Update 2更新了Visual Studio 2015.

现在,经过几个小时的正常工作,我收到了:"检测到内存不足.此解决方案禁用完整的解决方案分析." 它出现在VS2015的编辑器底座面板的顶部.

我看到Microsoft Connect报告了一个错误.

笔记:

  • 我正在使用Resharper.
  • 我的解决方案非常庞大,其中有32个项目.

如果有人有解决方法或提示如何解决这个问题,请告诉我.

更新:我和Anders Forsgren(第一条评论)的感受非常相似.这听起来对我的情况有了很好的总结.

更新2(2016-04-20)我最近(3天前)彻底清理了我的Framework.Net安装包(来自"程序和功能"),我删除了大约20-30个包.有些人是俄语.我还重新安装了Visual Studio和ReSharper.所有这些似乎都为我的环境增加了一些稳定性(更少或不再冻结 - >时间会证明).此外,最近推出了一个新的(2016-04-19).NET Framework修复工具版本.也许它可以帮助解决我们的一些问题,如果有任何相关的?

更新3经过一些测试并阅读一些人的文字.它似乎与.Net框架本身或Resharper无关.它似乎与VS2015本身有关,可能与Roslyn有关.我没有成功从VS2015中删除Roslyn/CodeAnalysis,它似乎是一个必不可少的部分.听起来我们将不得不等待Microsoft修复以获得稳定的环境.

更新4(2016-04-26)请参阅John Atwood的回答.很多信息.我刚开始测试它的答案.更新3应解决此问题(如果可用???).

更新5(2016-04-26 + 6小时)在VS自身完成1次重启后,一次令人难以置信的缓慢以及一条消息"内存不足......",我可以确认禁用完整解决方案分析无法解决问题,至少在我的机器上.我目前不知道任何适用于我的机器的修复/解决方法.

更新6(2016-06-15) Mladen Mihajlovic叫醒了我.我刚刚意识到我忘了告诉VS2015 Update 3 RC的可用性(请注意我认为它是第二个版本:Update 3 RC2).它自6月7日起在MSDN上可用,RC1 = 14.0.25401.00,而RC2 = 14.0.25402.00.听起来更稳定(我强烈推荐).

memory visual-studio-2015

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

Unable to use more than one processor group for my threads in a C# app

According to MSDN documentation and Stephen Toub answer, my C# app should use every Logical Processor of every Processor Group because it is configured as required (see my App.config below).

I run my app on a windows server 2012 with a NUMA architecture: 2 x [cpu Xeon E5-2697 v3 at 14 cores each with Hyper Thread activated] => 2 x 14 x 2 = 56 Logical Processors.

My app start 80 threads either from "Thread Class" or "Parallel.For" and …

.net c# multithreading

39
推荐指数
2
解决办法
7888
查看次数

Visual Studio 2015更新2 - 'Scc显示信息包未正确加载'

使用Update 2在Visual Studio 2015中加载项目(在VS启动或手动加载时自动加载),我收到错误消息:"Scc显示信息包未正确加载".

在此输入图像描述

ActivityLog具有:

  <entry>
    <record>541</record>
    <time>2016/04/01 13:43:26.048</time>
    <type>Error</type>
    <source>VisualStudio</source>
    <description>SetSite failed for package [Scc Display Information][An item with the same key has already been added.]:{   at Microsoft.VisualStudio.Services.VsTask.InternalGetResult(Boolean ignoreUIThreadCheck)&#x000D;&#x000A;   at Microsoft.VisualStudio.Services.VsTask.GetResult()}</description>
    <guid>{D7BB9305-5804-4F92-9CFE-119F4CB0563B}</guid>
    <hr>80070057 - E_INVALIDARG</hr>
    <errorinfo></errorinfo>
  </entry>
  <entry>
    <record>542</record>
    <time>2016/04/01 13:43:26.050</time>
    <type>Error</type>
    <source>VisualStudio</source>
    <description>End package load [Scc Display Information]</description>
    <guid>{D7BB9305-5804-4F92-9CFE-119F4CB0563B}</guid>
    <hr>80070057 - E_INVALIDARG</hr>
    <errorinfo></errorinfo>
  </entry>
Run Code Online (Sandbox Code Playgroud)

我在VS2015上使用Update 1安装了VS2015和更新2.我收到了错误(包...没有正确加载).

我完全卸载了VS2015.我完全重新安装了VS2015和Update 2.关于"Scc显示信息"包没有正确加载,我仍然遇到同样的问题.

更新问题似乎与我在VS2015 Update 1中遇到的问题类似.但我认为它与NuGet无关,因为我没有包含"Scc"的包.我总是将"Scc"与Visual Source Safe联系起来(它可能是相关的吗?).我怀疑问题来自注册表,但我无法弄清楚在哪里.

我尝试了Stack Overflow链接中的两个解决方案但没有成功:

  • 运行命令:C:\ Program Files(x86)\ Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe"/ resetskippkgs" …

c# load package visual-studio-2015

34
推荐指数
1
解决办法
7560
查看次数

c# - 易失性关键字使用与锁定

我已经使用了volatile,我不确定它是否有必要.我很确定锁定在我的情况下会有点过分.阅读这个帖子(Eric Lippert评论)让我对使用volatile感到焦虑:什么时候应该在c#中使用volatile关键字?

我使用volatile是因为我的变量在多线程上下文中使用,其中可以同时访问/修改此变量,但是我可以在没有任何伤害的情况下松散添加(参见代码).

我添加"挥发性",以确保有不发生未命中对准:在另一个取可以在2通过在从另一个线程中间的写入被打破仅读取32可变的比特和其他32位.

我先前的假设(先前的陈述)是否真的可以发生?如果没有,"挥发性"使用是否仍然是必要的(选项属性修改可能在任何线程中发生).

看了2个第一个答案.我想坚持代码编写方式的事实,如果由于并发性我们错过了一个增量(想要从2个线程递增但结果仅由于并发而增加1)并不重要变量'_actualVersion'递增.

作为参考,这是我正在使用它的代码的一部分.仅在应用程序空闲时报告保存操作(写入磁盘).

public abstract class OptionsBase : NotifyPropertyChangedBase
{
    private string _path;

    volatile private int _savedVersion = 0;
    volatile private int _actualVersion = 0;

    // ******************************************************************
    void OptionsBase_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
    {
        _actualVersion++;
        Application.Current.Dispatcher.BeginInvoke(new Action(InternalSave), DispatcherPriority.ApplicationIdle);
    }

    // ******************************************************************
    private void InternalSave()
    {
        if (_actualVersion != _savedVersion)
        {
            _savedVersion = _actualVersion;
            Save();
        }
    }

    // ******************************************************************
    /// <summary>
    /// Save Options
    /// </summary>
    private void Save()
    {
        using (XmlTextWriter writer = new XmlTextWriter(_path, null)) …
Run Code Online (Sandbox Code Playgroud)

c# performance multithreading volatile dispatcher

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

如何将d:DesignInstance设置为泛型类型?

一个简单的;-)

我宣布:

     xmlns:om="clr-namespace:System.Collections.ObjectModel;assembly=System"
Run Code Online (Sandbox Code Playgroud)

我尝试将泛型设置为DataType:

 <DataGrid d:DataContext="{
     d:DesignInstance Type=om:ObservableCollection&lt;System:Int32&gt;}" />
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:"类型的格式无效".

任何人都知道我该怎么做?

generics data-binding datacontext

21
推荐指数
2
解决办法
2520
查看次数

长期弱参考的任何实际例子?

有没有人有一个"长"弱参考(不短)的实际例子?

这仅供内部使用吗?

c# weak-references

16
推荐指数
1
解决办法
1888
查看次数

从枚举值列表中创建可检查上下文菜单的通用方法

我想创建一个上下文菜单,其中一个menuItem将是一个子菜单,可以在枚举值中进行选择.

我不想将我的枚举中的任何值硬编码到xaml中,因为我希望任何枚举值更改都可以自动反映在UI中而无需任何干预.

我希望我的菜单是一个没有任何工件的常规上下文菜单(我的意思是外观应该是一个常规的ContextMenu).

我尝试了许多方法但没有成功.我的每个试验总是错过一些东西,但主要是看起来主要的缺失部分是转换器参数,可以绑定到某些东西.

我红了:

这是我的许多试验和相关代码:

<Window x:Class="WpfContextMenuWithEnum.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wpfContextMenuWithEnum="clr-namespace:WpfContextMenuWithEnum"
        xmlns:system="clr-namespace:System;assembly=mscorlib"
        xmlns:converter="clr-namespace:WpfContextMenuWithEnum.Converter"
        Title="MainWindow" Height="350" Width="525"
        Name="MyWindow">
    <Window.DataContext>
        <wpfContextMenuWithEnum:MainWindowModel></wpfContextMenuWithEnum:MainWindowModel>
    </Window.DataContext>

    <Window.Resources>
        <ObjectDataProvider x:Key="EnumChoiceProvider" MethodName="GetValues" ObjectType="{x:Type system:Enum}">
            <ObjectDataProvider.MethodParameters>
                <x:Type TypeName="wpfContextMenuWithEnum:EnumChoice"/>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>

        <converter:EnumToBooleanConverter x:Key="EnumToBooleanConverter"></converter:EnumToBooleanConverter>
        <converter:MultiBind2ValueComparerConverter x:Key="MultiBind2ValueComparerConverter"></converter:MultiBind2ValueComparerConverter>
    </Window.Resources>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>

        <TextBox Text="Right click me">
            <TextBox.ContextMenu>
                <ContextMenu ItemsSource="{Binding Source={StaticResource EnumChoiceProvider}}">
                    <ContextMenu.ItemTemplate>
                        <DataTemplate>
                            <MenuItem IsCheckable="True" Header="{Binding Path=.}">
                                <MenuItem.IsChecked>
                                    <MultiBinding Converter="{StaticResource MultiBind2ValueComparerConverter}">
                                        <Binding Path="DataContext.ModelEnumChoice" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window}}" />
                                        <Binding Path="." Mode="OneWay"></Binding>
                                    </MultiBinding>
                                </MenuItem.IsChecked>
                            </MenuItem>
                        </DataTemplate>
                    </ContextMenu.ItemTemplate>
                </ContextMenu>
            </TextBox.ContextMenu> …
Run Code Online (Sandbox Code Playgroud)

c# wpf enums xaml menuitem

13
推荐指数
1
解决办法
1450
查看次数

解决编译错误“CS8601可能的空引用分配”

从 C# 8.0 开始,默认情况下标准是不可为 null 的变量。参考1

但对于像这样的泛型:

    public static T PerfomIO<T>(Func<T> function, T defaultValue = default)
    {
        try
        {
            return function();
        }
        catch (IOException)
        {
        }

        return defaultValue;
    }
Run Code Online (Sandbox Code Playgroud)

如何摆脱当我尝试传递“default”时出现的编译错误“CS8601可能的空引用分配”?

我想在这里支持空值。我不想禁用错误消息。我想按照应有的方式对其进行编程。

我尝试以多种方式添加 Nullable 但没有成功。我尝试 [AllowNull] 但没有成功

在此输入图像描述

c# parameters default nullable compiler-errors

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

如何在没有代码隐藏的情况下处理ViewModel中的WPF路由命令?

根据我对MVVM的理解,直接在ViewModel中处理路由命令是一种很好的做法.

当路由命令在ViewModel中定义为RelayCommand(或DelegateCommand)时,很容易直接绑定到命令,如下所示:Command = {Binding MyViewModelDefinedCommand}.

实际上,对于在我的ViewModel之外定义的路由命令,我在View后面的代码中处理这些命令并将调用转发到ViewModel.但我发现我必须这样做很尴尬.它违背了推荐的MVVM良好做法.我认为应该有一种更优雅的方式来实现这项工作.

如何直接在ViewModel中处理"System.Windows.Input.ApplicationCommands"或在Viewmodel外部定义的任何路由命令.换句话说,对于在ViewModel之外定义的命令,我如何直接处理ViewBodel的CommandBinding回调"CommandExecute"和/或"CommandCanExecute"?这有可能吗?如果有,怎么样?如果不是,为什么?

c# wpf command routed-commands mvvm

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

c#Environment.ProcessorCount并不总是返回完整数量的逻辑处理器,为什么?

在我的机器上,Windows 7 - Enterprise 1 x Intel Xeon E5-1660 0 @ 3.30Ghz(激活超线程的6核/ CPU),Environment.ProcessorCount返回12,这是准确的.

在具有2 x Intel Xeon E5-2697 v3 @ 2.60GHz的Windows Server 2012上(启动了超线程的14核/ CPU(我认为因为任务管理器显示:2个插槽,28个核心,56个逻辑处理器)),Environment.ProcessorCount返回因为2x14x2 = 56,我们认为这是错误的.

为什么在Windows Server 2012 c#方法Environment.ProcessorCount没有返回正确数量的逻辑处理器?

作为附加信息,环境变量如下:NUMBER_OF_PROCESSORS = 28

任务管理器

更新2015-05-26:

在我的另一个问题中有更多关于此相关错误的详细信息/原因:无法在C#应用程序中为我的线程使用多个处理器组.主要是我认为C#只使用一个处理器组.有什么问题,在我们的服务器上,有2个处理器组,尽管只有56个逻辑处理器.但是这个惠普客户咨询解释了为什么我们的服务器BIOS配置导致错误的窗口.

c# cpu core hyperthreading server

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