2013-08-31 9 views
6

Próbuję ustawić globalne reguły dla mojego zespołu. Używamy VS2012 z TFS dla naszych projektów C#. Chciałbym stłumić niektóre ostrzeżenia i potraktować niektóre z ostrzeżeń jako błędy. Znalazłem sposób na zrobienie tego na poziomie projektu - właściwości projektu -> karta budowy.Ukryj ostrzeżenie na poziomie rozwiązania. Traktuj ostrzeżenie jako błąd na poziomie rozwiązania

Ale mamy rozwiązanie z ponad setką projektów i szukam łatwiejszego sposobu na ustawienie tych reguł na całym świecie.

+0

Obawiam się, że trzeba napisać makro, ponieważ te ustawienia nie są przechowywane w rozwiązaniu. – rene

+0

Możesz użyć tego samego zestawu reguł dla wielu projektów - zakładam, że już to robisz, i chcesz tylko uniknąć ręcznego określania tego pliku w każdym projekcie? –

+0

Właśnie zacząłem zagłębiać się w te rzeczy. Muszę więc powiedzieć, że nie jestem naprawdę pewien. Myślałem, że zestawy reguł są zdefiniowane do analizy kodu i że jest to coś innego niż ostrzeżenia kompilatora. Do tej pory nie dotykałem zestawów reguł ... – jumbo

Odpowiedz

5

Rozwiązanie to tylko (całkiem niemy) kontener dla projektów. Jeśli otworzysz go w edytorze tekstu, szybko zobaczysz, że nie możesz go rozszerzyć, a jedynie dodawać projekty/elementy.

To, czego potrzebujesz, to jeden lub kilka typowych plików msbuild, określających wszystkie potrzebne opcje dla kompilatora/łącznika/dowolnych używanych narzędzi i Import w każdym projekcie. Używamy tego od lat i jest to bardzo wygodne (chociaż częścią wygody jest prawdopodobnie to, że napisaliśmy też małe narzędzie do generowania plików projektu, aby automatycznie importować globalne właściwości, więc nie musimy z nimi mieszać ręcznie)

Można również dodać plik z rozszerzeniem komputera, zajrzyj do $ (MSBuildToolsPath) \ Microsoft.CSharp.targets, aby zobaczyć, gdzie umieścić te pliki. Nie zamierzam tu kopiować/wklejać zawartości, ale pierwsze linie w zasadzie sprawdzają, czy istnieją pliki zdefiniowane przez użytkownika w np. $ (MSBuildExtensionsPath) \ $ (MSBuildToolsVersion) \ $ (MSBuildThisFile) \ ImportBefore, a jeśli tak, to są one wszystko zaimportowane przed wszystkimi pospolitymi materiałami MSbuild. Podobnie koniec Microsoft.CSharp.targets zawiera podobną logikę do importowania plików po wszystkich typowych rzeczach msbuild.

+0

Widzę więc, że będę musiał napisać jakiś skrypt, aby zaktualizować wszystkie pliki projektu mimo to (na razie szeroki plik maszyny nie jest dostępny), mam rację? – jumbo

+0

który rzeczywiście wydaje się być jedynym sposobem (oprócz ręcznej edycji wszystkich plików); nie powinno to być jednak trudne: wszystko, co musisz zrobić, to wstawić pojedynczą linię, taką jak '' tuż przed istniejącym '' line - Sugerowałbym użycie realtycznej ścieżki do common.props – stijn

Powiązane problemy