Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 CSS Intellisense不适用于Visual Studio 2012 Ultimate中的MVC 4项目_Asp.net Mvc 4_Visual Studio 2012_Intellisense - Fatal编程技术网

Asp.net mvc 4 CSS Intellisense不适用于Visual Studio 2012 Ultimate中的MVC 4项目

Asp.net mvc 4 CSS Intellisense不适用于Visual Studio 2012 Ultimate中的MVC 4项目,asp.net-mvc-4,visual-studio-2012,intellisense,Asp.net Mvc 4,Visual Studio 2012,Intellisense,创建了一个全新的Visual Studio 2012 Ultimate SP2 MVC4项目,但无法使CSS类选择器intellisense正常工作 键入时,请尝试为Visual Studio 2012添加Web Essentials 2012扩展: 和/或 尝试添加Microsoft Web Developer工具扩展 我有这两个,并且使用您的同一个示例,intellisense工作起来很有魅力。是CSS intellisense失败了,还是在整个Visual Studio中完全停止了 我有一

创建了一个全新的Visual Studio 2012 Ultimate SP2 MVC4项目,但无法使CSS类选择器intellisense正常工作


键入
时,请尝试为Visual Studio 2012添加Web Essentials 2012扩展:

和/或

尝试添加Microsoft Web Developer工具扩展


我有这两个,并且使用您的同一个示例,intellisense工作起来很有魅力。

是CSS intellisense失败了,还是在整个Visual Studio中完全停止了

我有一个类似的问题影响了我的整个VisualStudio2012。那是很久以前的事了,但我记得我从appdata中删除了一个文件夹。请查看此链接,希望它能帮助您:

我尝试了上述所有补救措施和建议。这些在我的环境中都不起作用。据微软称(微软连接的bug id为781048),他们还没有为MVC/Razor文件实现CSS类intellisense,但正在努力将其包含在未来的版本中

我有一个扩展VS2012 intellisense的10分钟网络广播示例,它添加了一个将intellisense添加到VS2012环境的解决方案:

网络广播使用MEF扩展VisualStudio以添加intellisense完成源,该源扫描当前加载的项目,查找要添加为intellisense完成集的CSS类名。以下是css完成源类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.Language.Intellisense;
using Microsoft.VisualStudio.Text;
using Microsoft.VisualStudio.Text.Operations;
using Microsoft.VisualStudio.Utilities;
using EnvDTE;
using System.Text.RegularExpressions;
using System.Configuration;
using System.Collections.Specialized;

namespace CssClassIntellisense
{
   internal class cssClassList
   {
      public string cssFileName { get; set; } //Intellisense Statement Completion Tab Name

      public HashSet<string> cssClasses { get; set; }
   }

   internal class CssClassCompletionSource : ICompletionSource
   {
    private CssClassCompletionSourceProvider m_sourceProvider;
    private ITextBuffer m_textBuffer;
    private List<Completion> m_compList;
    private Project m_proj;
    private string m_pattern = @"(?<=\.)[A-Za-z0-9_-]+(?=\ {|{|,|\ )";
    private bool m_isDisposed;

    //constructor
    public CssClassCompletionSource(CssClassCompletionSourceProvider sourceProvider, ITextBuffer textBuffer, Project proj)
    {
        m_sourceProvider = sourceProvider;
        m_textBuffer = textBuffer;
        m_proj = proj;
    }

    public void AugmentCompletionSession(ICompletionSession session, IList<CompletionSet> completionSets)
    {

        ITextSnapshot snapshot = session.TextView.TextSnapshot;
        SnapshotPoint currentPoint = (SnapshotPoint)session.GetTriggerPoint(snapshot);

        if (TargetAttribute.Inside(currentPoint))
        {
            var hash = new List<cssClassList>();
            //read any .css project file to get a distinct list of class names
            if (m_proj != null)
                foreach (ProjectItem _item in m_proj.ProjectItems)
                {
                    getCssFiles(_item, hash);
                }

            //Scan Current Editor's text buffer for any inline css class names 
            cssClassList cssclasslist = ScanTextForCssClassName(
                    "Inline", snapshot.GetText());

            //If file had any css class names add to hash of files with css class names
            if (cssclasslist != null)
                hash.Add(cssclasslist);

            var _tokenSpanAtPosition = FindTokenSpanAtPosition(session.GetTriggerPoint(m_textBuffer), session);

            foreach (cssClassList _cssClassList in hash)
            {
                m_compList = new List<Completion>();
                foreach (string str in _cssClassList.cssClasses.OrderBy(x => x))  //alphabetic sort
                    m_compList.Add(new Completion(str, str, str, null, null));

                completionSets.Add(new CompletionSet(
                    _cssClassList.cssFileName,    //the non-localized title of the tab 
                    _cssClassList.cssFileName,    //the display title of the tab
                    _tokenSpanAtPosition,
                    m_compList,
                    null));

            }
        }
    }

    private ITrackingSpan FindTokenSpanAtPosition(ITrackingPoint point, ICompletionSession session)
    {
        SnapshotPoint currentPoint = (session.TextView.Caret.Position.BufferPosition) - 1;
        ITextStructureNavigator navigator = m_sourceProvider.NavigatorService.GetTextStructureNavigator(m_textBuffer);
        TextExtent extent = navigator.GetExtentOfWord(currentPoint);
        return currentPoint.Snapshot.CreateTrackingSpan(extent.Span, SpanTrackingMode.EdgeInclusive);
    }


    private void getCssFiles(ProjectItem proj, List<cssClassList> hash)
    {
        foreach (ProjectItem _item in proj.ProjectItems)
        {
            if (_item.Name.EndsWith(".css") &&
                !_item.Name.EndsWith(".min.css"))
            {
                //Scan File's text contents for css class names
                cssClassList cssclasslist = ScanTextForCssClassName(
                    _item.Name.Substring(0, _item.Name.IndexOf(".")),
                    System.IO.File.ReadAllText(_item.get_FileNames(0))
                    );

                //If file had any css class names add to hash of files with css class names
                if (cssclasslist != null)
                    hash.Add(cssclasslist);
            }
            //recursively scan any subdirectory project files
            if (_item.ProjectItems.Count > 0)
                getCssFiles(_item, hash);
        }
    }

    private cssClassList ScanTextForCssClassName(string FileName, string TextToScan)
    {

        Regex rEx = new Regex(m_pattern);
        MatchCollection matches = rEx.Matches(TextToScan);
        cssClassList cssclasslist = null;

        if (matches.Count > 0)
        {
            //create css class file object to hold the list css class name that exists in this file
            cssclasslist = new cssClassList();
            cssclasslist.cssFileName = FileName;
            cssclasslist.cssClasses = new HashSet<string>();

        }

        foreach (Match match in matches)
        {
            //creat a unique list of css class names
            if (!cssclasslist.cssClasses.Contains(match.Value))
                cssclasslist.cssClasses.Add(match.Value);
        }

        return cssclasslist;
    }

    public void Dispose()
    {
        if (!m_isDisposed)
        {
            GC.SuppressFinalize(this);
            m_isDisposed = true;
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.ComponentModel.Composition;
使用Microsoft.VisualStudio.Language.Intellisense;
使用Microsoft.VisualStudio.Text;
使用Microsoft.VisualStudio.Text.Operations;
使用Microsoft.VisualStudio.Utilities;
使用EnvDTE;
使用System.Text.RegularExpressions;
使用系统配置;
使用System.Collections.Specialized;
名称空间CssClassIntellisense
{
内部类cssClassList
{
公共字符串cssFileName{get;set;}//Intellisense语句完成选项卡名称
公共HashSet cssClasses{get;set;}
}
内部类CssClassCompletionSource:ICompletionSource
{
私有CssClassCompletionSourceProvider m_sourceProvider;
私有ITextBuffer m_textBuffer;
私人名单m_compList;
私人项目m_项目;

私有字符串m_pattern=@”(?您无法在VS2012中为Razor视图获取CSS的intellisense。使用intellisense有一个解决方法。只需创建一个测试视图(.aspx)使用ASPX视图引擎并在其中包含css文件。现在intellisense将在新的ASPX视图中工作。您所要做的就是将css类从ASPX复制粘贴到Razor视图(.cshtml或.vbhtml)。我希望这能有所帮助。

谢谢你的建议,但这不起作用。我已经安装了Web Developer Tools extension,并且刚刚安装了Web Essentials 2012,但没有任何区别。在原始问题中添加了我安装的内容的屏幕截图。如果将CSS移到专用的.CSS文件,英特尔会不会lisense有效?这只是MVC项目的CSS intellisense。Web表单项目似乎可以正常工作。尝试删除您建议的文件夹,但没有任何乐趣。还多次卸载VS2012并重新安装,但仍然不起作用。您是否有机会使此工作正常?我在MVC中尝试使用引导时遇到了相同的问题.我也有同样的问题…任何解决方案?ReSharper非常昂贵-我自己使用它,但建议使用一个耗资数百美元的工具并不能真正回答OP的问题,是吗?特别是在这种情况下,没有ReSharper就有可能得到这样的结果。了解成本。但是,由于之前没有回答过p提供了一个解决方案,可为CSS类intellisense提供VS2012 MVC razor视图。我相信,事先知道MS尚未实现此功能,以避免认为这是VS2012问题是有帮助的。我提到的ReSharper是一个可行的选项,尽管成本很高。