2013-04-13 18 views
13

yepyeni Visual Studio 2012 Ultimate SP2 MVC4 proje oluşturdunuz Visual Studio içinde MVC 4 projesi için çalışmıyor ama CSS sınıf seçici intellisense işe alamıyor?CSS IntelliSense 2012 Ultimate

Ben <p class="m" yazdığınızda .... ben intellisense açılır görünen sınıf "Sınıfım" almalısınız ama hiçbir şey olmuyor.

aşağıda listeledik dosyasıdır: \Views\Shared\_Layout.cshtml

Herhangi Fikirler?

Düzenleme: VS2012'yi yeni Windows 7 sisteminde (Mac OSX paralel 8'de çalışan) yeniden yüklediniz ve yine aynı şekilde davranıyorsunuz. MVC 3 projeleri için de aynı görünüyor. yüklü

enter image description here

Uzantıları: enter image description here

+0

Bunu bir şans eseri aldınız mı? MVC'de bootstrap kullanmaya çalışırken aynı problemle karşılaştım. – Thunda

+0

Aynı sorunu yaşıyorum ... Herhangi bir çözünürlük? – PGallagher

cevap

1

deneyin ekleyerek Web Essentials Visual Studio 2012 2012 dahili: http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6?SRC=VSIDE

Ve/Veya Microsoft Web Developer Tools uzantısı ekleyerek

deneyin.

bunlardan ikisine de sahip ve aynı örneği kullanarak intellisense bir cazibe gibi çalışır.

+1

Öneri için teşekkürler, ancak bu işe yaramadı. Web Developer Tools eklentisini zaten yükledim ve Web Essentials 2012'yi yeni yükledim ancak bu hiç bir fark yaratmadı. Orijinal soruya ne yüklediğimin ekran görüntüsünü ekledim. – cyberbobcat

+0

CSS'yi adanmış bir .css dosyasına taşırsanız intellisense çalışır mı? – Dubmun

0

başarısız oluyor veya tamamen Visual Studio boyunca durduktan sadece CSS intellisense var mı?

Ben bir süre önce benim Visual Studio 2012. bütününü etkileyen benzer bir sorunu vardı ama benim AppData bir klasör silme hatırlıyorum. Bu bağlantıya bir göz atın, umarım yardımcı olur: http://www.haneycodes.net/visual-studio-2012-intellisense-not-working-solved/

+0

MVC projeleri için sadece CSS intellisense. Web Formları projeleri işe yarıyor gibi görünüyor. Önerdiğiniz klasörleri silmeyi denediniz ama neşe yok. Ayrıca VS2012 birkaç kez kaldırıldı ve yeniden yüklendi ama hala çalışmıyor. – cyberbobcat

1

Yukarıda belirtilen tüm ilaçları ve önerileri denedim. Bunların hiçbiri çevremde işe yaramadı. Microsoft'a göre (Microsoft connect'in hata kodu 781048), MVC/Razor dosyaları için CSS sınıfı intellisense uygulamamışlar, ancak gelecekteki bir sürümde bunu dahil etmek için çalışıyorlar. a Visual Studio Intellisense Extension

web yayını tarayan intellisense tamamlama kaynağı eklemek için Visual Studio uzatmak için MEF kullanır:

Ben senin VS2012 ortamına intellisense katacak bir çözüm ekler VS2012 intellisense uzanan bir 10 dakikalık yayını örnek var Şu anda yüklü bir proje olarak bir intellisense tamamlama seti olarak eklemek için CSS sınıf isimleri için yüklü. İşte css tamamlama kaynağı sınıftır: Bir Bilginize olarak

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; 
     } 
    } 
} 

}

, ayrıca Resharper kullanarak bu sorunu ele alabilir. Ama bu Visual Studio Sen Jilet görünümleri için VS2012 CSS için intellisense almak için gidiş değildir

+0

ReSharper çok pahalıdır - bunu kendim kullanıyorum ama yüzlerce dolara mal olan bir aracın OP'nin sorununun cevabı olmadığını mı düşünüyorsunuz? Özellikle bu durumda _without_ ReSharper bu tür sonuç elde etmek mümkün olduğundan. –

+0

Maliyet hakkında bilgi edinin. Ancak, daha önceki cevaplardan hiçbiri, VS2012 MVC traş makinesi görünümleriyle CSS sınıfı intellisense sağlamak için çalışan bir çözüm sağladığından dolayı. MS'nin bu özelliği henüz uygulamaya koymadığını bilerek, bunun bir VS2012 sorunu olduğunu düşünmemek faydalı olacaktır. Ve ReSharper'dan bahsettiğim, maliyet karşılığında da olsa çalıştığı bir seçimdi. –

0

için satın gereken bir 3. parti ürünüdür. Intellisense kullanmak için bir geçici çözüm var. Sadece ASPX view engine kullanarak bir test görünümü (.aspx) oluşturun ve css dosyanızı buraya ekleyin. Şimdi intellisense yeni aspx görünümünde çalışacak. Tek yapmanız gereken css sınıfını aspx'ten Razor'a (.cshtml veya .vbhtml) yapıştırın. Umarım bu yardımcı olur.