Jak mogę skompilować projekt .NET bez zainstalowanego programu Visual Studio?

36

Chcę skompilować projekt .NET / C #, ale nie chcę instalować programu Visual Studio, aby to zrobić.

Jakich narzędzi potrzebuję i jak mogę skompilować projekt?

Der Hochstapler
źródło
Czy Visual Studio Express nie działa dla Ciebie?
sick
1
@svick: Gdybym musiał mieć go do skompilowania projektu, użyłbym go. Ale w tym przypadku nie jest to konieczne, więc nie muszę instalować go na każdym komputerze, na którym chcę wdrożyć projekt. Mogę po prostu pobrać kopię z VCS, skompilować ją i uruchomić. Zainstalowanie VS Express skomplikowałoby cały proces.
Der Hochstapler,
W takim przypadku prostszym rozwiązaniem może być wdrożenie skompilowanego zestawu. W ten sposób nie musisz kompilować się na każdym komputerze.
sick
@svick: Dziękuję za wgląd, ale krótkotrwałe wdrażanie binariów również przyszło mi do głowy. Gdybym w tym przypadku uznał to za korzystną alternatywę, zrobiłbym to. To powiedziawszy, to pytanie i odpowiedź zostały zamieszczone, aby po prostu opisać proces. Decyzja, czy ten proces jest właściwy w przypadku użytkowników, należy do nich.
Der Hochstapler,

Odpowiedzi:

37
  1. Pobierz i zainstaluj najnowszą .NET Framework.
    Na przykład możesz użyć instalatora dla instalatora .NET Framework 4.5 .

  2. Otwórz wiersz polecenia i przejdź do katalogu instalacyjnego programu .NET Framework.
    Na przykład:

    cd \Windows\Microsoft.NET\Framework\v4*
    
  3. Użyj, MSBuild.exeaby skompilować swoje rozwiązanie.
    Na przykład:

    msbuild "C:\Users\Oliver\Documents\My Project\My Project.sln" /t:Rebuild /p:Configuration=Release /p:Platform="Any CPU"

Jeśli projekt korzysta z pakietów NuGet, możesz wykonać następujące kroki, aby je odzyskać:

  1. Pobierz plik wiersza polecenia NuGet.exe i na przykład umieść go w katalogu rozwiązania.

  2. Otwórz wiersz polecenia i przejdź do katalogu rozwiązania.
    Na przykład:

    cd "C:\Users\Oliver\Documents\My Project"
    
  3. Wywołaj, NuGet.exeaby zaktualizować pakiety wymagane dla tego rozwiązania:

    NuGet.exe install "My Project/packages.config" -o packages/
    
Der Hochstapler
źródło
Miły! Jakieś linki do dokumentacji MSBuild? Dotyczy to również projektu VS, który już masz, prawda? Co z kompilacją kodu w .CS lub innych plikach źródłowych?
Karan
2
@Karan - Czy ktoś chce udzielić odpowiedzi na podstawie tego artykułu msdn.microsoft.com/en-us/library/vstudio/78f4aasd.aspx ?
Ramhound,
@Ramhound: Myślę, że ktoś znający się na rzeczy może równie dobrze włączyć to wszystko do jednej odpowiedzi typu FAQ. Również niektóre pytania uzupełniające, które można rozwiązać. Czy program csc.exe jest również dołączony do instalacji środowiska .NET dla użytkownika końcowego? Czy jest to uwzględnione, jeśli instalujesz tylko profil klienta?
Karan
1
@Karan: Dodałem link do MSBuild.exedokumentacji argumentów wiersza poleceń. Tak, dotyczy to projektu, który jest już na komputerze lokalnym (być może pobrany z GitHub). Jak wspomina Ramhound, csc.exebyłoby to narzędzie do kompilacji pojedynczych plików. csc.exejest również w pakiecie z .NET Framework. Jest to podstawowy kompilator C # i MSBuild prawdopodobnie po prostu go wywołuje. Nie jestem pewien co do profilu klienta, ale zakładam, że są w nim zawarte.
Der Hochstapler
1
Jednym z powodów, które csc.exenależy uwzględnić, jest to, że profil klienta obejmuje XmlSerializerklasę. Ta klasa generuje zestawy serializacji (przy użyciu csc.exe) w czasie wykonywania.
heavyd
3

Jeśli chcesz uniknąć instalowania programu Visual Studio, może chcesz spróbować Mono , a cross-platform open source wykonania .NET i ramy rozwoju. Mono jest oparte na opublikowanym standardzie ECMA dla języka C # i jest bezpośrednio kompatybilne ze wstępnie skompilowanymi aplikacjami C #.

Mono zawiera również narzędzie o nazwie XBuild, które może w pełni zastąpić MSBuild. Zobacz ten artykuł z projektu Mono dotyczący przenoszenia projektu z MSBuild do XBuild. Jednowierszowy opis XBuild z Wiki:

xbuild jest implementacją msbuild przez Mono i pozwala na kompilację projektów, które mają plik msbuild na Linuksie.

Pamiętaj, że oprócz Linuksa obsługiwane są również systemy Windows i Mac OS X.

Przełom
źródło
1
Czy istnieje jakiś powód, dla którego warto skorzystać monow systemie Windows?
Rishav
2
@Rishav Względy polityczne? Być może dla kogoś, kto jest zobowiązany do korzystania z systemu Windows, ale chce korzystać z jak najmniejszej liczby innych technologii Microsoft. Ale tylko spekuluję.
Jamie,