7

Mam kod źródłowy Entlib 5.0 i potrzebuję podpisania wszystkich złożeń za pomocą mojego własnego klucza (plik snk).Modyfikuj programowo pliki csproj

Najprostszym sposobem byłoby otworzyć plik rozwiązania EnterpriseLibrary.2010 w Visual Studio a następnie dla każdego projektu wybrać Ustawienia-> Podpisanie wybierz Zarejestruj Zgromadzenie a następnie wybierz plik klucza.

Ale ja nie chcę ręcznie należy, że wtedy będę mógł napisać skrypt ręcznie edytować pliki projektu i wstawić następujące po zakończeniu aktualnej listy PropertyGroups:

<PropertyGroup> 
    <SignAssembly>true</SignAssembly> 
    </PropertyGroup> 
    <PropertyGroup> 
    <AssemblyOriginatorKeyFile>keyFile.snk</AssemblyOriginatorKeyFile> 
    </PropertyGroup> 

dowolnej klasy pomocnik w języku C# lub skryptów, jeśli byłyby lepsze dla zrobić to łatwo i szybko?

+1

Dlaczego nie napisać programu C#, który używa klasy XDocument? –

Odpowiedz

19

Można spojrzeć na przestrzeni nazw Microsoft.Build.BuildEngine MSDN Link

Przykładowy kod:

Engine eng = new Engine() 
Project proj = new Project(eng); 
proj.Load(FullProjectPath); 
proj.SetProperty("SignAssembly", "true"); 
proj.Save(FullProjectPath); 

Niedawno używane coś podobnego wprowadza szereg zmian we wszystkich .csproj mojej firmy pliki (ponad 200) zamiast ręcznie otwierać każdy projekt i wprowadzać zmiany.

Mam nadzieję, że to pomoże.

+1

Na pewno, kiedy go użyłem, napisałem aplikację konsolową, która zajrzała do naszego katalogu źródłowego i pobrała wszystkie pliki .csproj, a następnie wprowadziła potrzebne zmiany. Trzeba tylko dodać odniesienie do Microsoft.Build.Engine i Microsoft.Build.Framework –

+0

Czy wiesz od ręki, czy część "csproj" "Post Build Event" jest dostępna za pośrednictwem tej biblioteki? Łowiłem trochę. Ale jeszcze jej nie znalazłem. Dzięki. I "Awansuj" na tę odpowiedź. – granadaCoder

+0

Na pewno powinieneś być w stanie zrobić coś takiego jak Target postBuild = proj.Targets ["AfterBuild"]; przy założeniu, że nie było komentarza w pliku projektu. Kręciłem się około 5 sekund i nie widziałem, jak dodać cel, jeśli nie istniało, ale wiem, że można to zrobić. Ponadto przestrzeń nazw jest przestarzała i możesz mieć więcej szczęścia z jej wymianą. –