Como posso compilar um projeto .NET sem ter o Visual Studio instalado?

36

Quero compilar um projeto .NET / C #, mas não quero instalar o Visual Studio para fazer isso.

De que ferramentas eu preciso e como posso compilar o projeto?

Der Hochstapler
fonte
O Visual Studio Express não funciona para você?
svick
1
@svick: Se eu precisar dele para compilar o projeto, eu o usaria. Mas, nesse caso, não é necessário; portanto, não preciso instalá-lo em todas as máquinas em que desejo implantar o projeto. Eu posso simplesmente puxar uma cópia do VCS, compilá-la e executá-la. A instalação do VS Express teria complicado demais o processo inteiro.
Der Hochstapler
Nesse caso, uma solução mais simples pode ser implantar um assembly compilado. Dessa forma, você não precisa fazer nenhuma compilação em todas as máquinas.
svick
@svick: Obrigado pela sua compreensão, mas a implantação de binários também passou por minha mente. Se eu tivesse considerado uma alternativa benéfica neste caso, eu teria feito. Dito isto, esta pergunta e resposta foram postadas para simplesmente descrever um processo. Decidir se esse processo é o caminho a seguir no caso dos usuários é uma decisão que lhes resta.
Der Hochstapler

Respostas:

37
  1. Baixe e instale o .NET Framework mais recente.
    Por exemplo, você pode usar o instalador para o instalador do .NET Framework 4.5 .

  2. Abra um prompt de comando e mude para o diretório de instalação do .NET Framework.
    Por exemplo:

    cd \Windows\Microsoft.NET\Framework\v4*
    
  3. Use MSBuild.exepara compilar sua solução.
    Por exemplo:

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

Caso o projeto use pacotes NuGet, siga estas etapas para recuperá-los:

  1. Faça o download do boostrapper da linha de comando NuGet.exe e, por exemplo, coloque-o dentro do diretório da solução.

  2. Abra um prompt de comando e mude para o diretório da solução.
    Por exemplo:

    cd "C:\Users\Oliver\Documents\My Project"
    
  3. Invoque NuGet.exepara atualizar os pacotes necessários para esta solução:

    NuGet.exe install "My Project/packages.config" -o packages/
    
Der Hochstapler
fonte
Agradável! Algum link da documentação do MSBuild? Além disso, isso é para um projeto de VS que já existe, certo? Que tal compilar código em .CS ou outros arquivos de origem?
Karan
2
@Karan - Alguém quer responder com base neste artigo msdn.microsoft.com/en-us/library/vstudio/78f4aasd.aspx ?
Ramhound
@ Ramhound: Eu acho que alguém com conhecimento também pode incorporar tudo isso em uma única resposta do tipo FAQ. Também algumas perguntas de acompanhamento que podem ser abordadas. O csc.exe também é fornecido com uma instalação do .NET framework do usuário final? Está incluído se você instalar apenas o perfil do cliente?
Karan
1
@ Karan: Adicionei um link para a MSBuild.exedocumentação do argumento da linha de comando. Sim, isso é para um projeto que já está na máquina local (talvez baixado do GitHub). Como Ramhound menciona, csc.exeseria a ferramenta principal para compilar arquivos únicos. csc.exetambém é fornecido com o .NET Framework. É o principal compilador C # e o MSBuild provavelmente apenas o invoca. Não tenho certeza sobre o perfil do cliente, mas eu diria que eles estão incluídos nele.
Der Hochstapler
1
Um motivo que csc.exeprecisa ser incluído é porque o perfil do cliente inclui a XmlSerializerclasse. Essa classe gera assemblies de serialização (usando csc.exe) em tempo de execução.
heavyd
3

Se você deseja evitar a instalação do Visual Studio, experimente o Mono , uma estrutura de tempo de execução e desenvolvimento .NET de plataforma aberta e código-fonte. O Mono é baseado no padrão ECMA publicado para C # e é diretamente compatível com aplicativos C # pré-compilados.

O Mono também inclui uma ferramenta chamada XBuild que pode substituir completamente o MSBuild. Consulte este artigo do projeto Mono sobre a portabilidade de um projeto do MSBuild para o XBuild. Uma descrição de uma linha do XBuild do Wiki:

O xbuild é a implementação do msbuild do Mono e permite que projetos que possuem um arquivo msbuild sejam compilados nativamente no Linux.

Observe que, além do Linux, Windows e Mac OS X, também são suportados.

Avanço
fonte
1
Existe algum motivo que alguém usaria monono Windows?
Rishav 30/03
2
@Rishav Considerações políticas? Talvez para quem precisa usar o Windows, mas quer usar o mínimo possível de outras tecnologias da Microsoft. Apenas especulando, no entanto.
21318 Jamie