A janela interativa do C # pode interagir com meu código?

160

No Visual Studio 2015 ou posterior, posso abrir a 'janela interativa do C #' e executar o código:

> 5 + 3
8

Que bonitinho. Agora, como posso interagir com meu código - minhas classes? Suponha que eu tenho um projeto aberto.

> new Cog()
(1,5): error CS0246: The type or namespace name 'Cog' could not be found (are you missing a using directive or an assembly reference?)
Coronel Panic
fonte
Roslyn não é uma janela interativa. É a API do compilador .NET. Tem certeza de que não está perdendo as coisas?
quer
3
Esse é um recurso fornecido com Roslyn blogs.msdn.com/b/csharpfaq/archive/2012/01/30/…
Coronel Panic
Eu sempre uso a janela imediata padrão para isso - funciona com seus próprios tipos também.
Polyfun
2
O que é a 'janela imediata padrão?'
Coronel Panic
@MattHickford Veja minha resposta atualizada para obter mais informações
preguiça

Respostas:

220

Ao usar o Visual Studio 2015:

Você pode abrir a janela Interativo navegando para Visualizações> Outras janelas> C # interativo ,

Em seguida, clique com o botão direito do mouse no seu projeto e execute Inicializar interativo com o projeto no menu de contexto.


Para versões mais antigas:

Para usar a Janela Interativa C # com seu código, primeiro compile seu código e adicione uma referência ao assembly resultante com o #rcomando da seguinte maneira:

Prompt de comando c #


Você também pode usar a Janela Imediata para interagir com seu código, da seguinte maneira:

Janela imediata

bicho-preguiça
fonte
1
Obrigado. Eu gosto mais da janela interativa em C #. A janela imediata é hostil, não há preenchimento automático. Console.WriteLine("hey") The name 'Console' does not exist in the current context System.Console.WriteLine("hey") Expression has been evaluated and has no value
Coronel Panic
-1, a pergunta é sobre o uso do novo C # REPL (janela interativa) que faz parte do roslyn. Dê uma olhada nos vídeos c9 de Don Syme, onde ele usa a janela interativa F # à medida que se desenvolve. Coisa boa. channel9.msdn.com/Series/…
John Dhom
25
@JohnDhom Por que o voto negativo? Minhas respostas mostram totalmente como interagir com seu próprio código através da janela interativa C # (há até uma captura de tela mostrando isso).
Preguiça
8
Nos projetos .Net Core, o item do menu de contexto não aparece, portanto, o método #r é necessário. Essa resposta é perfeita para isso.
Ryan
2
Quero adicionar uma dica mais útil: se você quiser usar algumas coisas em tempo de execução, você pode facilmente adicionar esta directiva:#r "System.Runtime"
mostafa8026
70

Você pode usar classes de seu próprio projeto.
Basta clicar com o botão direito na sua solução e selecionar "Redefinir interativo do projeto".

Se você precisar de mais informações, aqui está a fonte:
Usando a janela interativa de C # que acompanha Roslyn - parte 2

Botz3000
fonte
1
Obrigado, isso parece certo. Infelizmente, ele não funciona como descrito - qualquer que seja o projeto em que eu experimente, ele exibe um alerta de erro dizendo 'nome de assembly inválido'. Frustrantemente, não explica de que montagem está falando. Eu acho que o software está quebrado.
Coronel Panic
@ MattHickford: Que tipo de projeto é o projeto? Não fizemos muitos testes além dos simples ConsoleApplications e ClassLibraries.
precisa
Obrigado por perguntar ao Kevin. Eu apenas tentei 'redefinir interativo do projeto' em alguns projetos menores, funcionou corretamente. Os projetos para os quais não funciona de maneira confiável são bibliotecas e aplicativos mais complicados, com muitas referências.
Coronel Panic
25
Nada disso se aplica mais ao VS 2015. O comando do menu de contexto desapareceu e #rnão encontra os assemblies do meu projeto. Alguma ideia?
ygoe
18
Na Atualização 3 do VS 2015, há uma 'Inicialização interativa com o projeto' ao clicar com o botão direito do mouse em um projeto na solução (no Solution Explorer).
Andrei Pana
44

Apenas uma atualização da resposta @ Botz3000.

O comando que você deseja encontrar agora é chamado "Inicializar interativo com o projeto"

insira a descrição da imagem aqui

Também vale a pena notar que eu não poderia encontrar este comando se minha janela interativa em C # não estivesse visível.

Luke Hammer
fonte
11
Não, não é. Eu tenho exatamente no mesmo local que a captura de tela aponta.
Tom
3
@Tom parece funcionar ou não funcionar com base no tipo de projeto em que você está trabalhando. com que tipo de projeto você estava trabalhando quando o encontrou?
Luke Martelo
@WizardHammer Eu acredito Biblioteca de Classes
Tom
10
Eu estou tentando chegar a este trabalho com uma biblioteca netstandard ea opção não está lá no menu de contexto
ChadT
11

Concordo totalmente que "Inicializar interativo com o projeto" é legal.

Minha abordagem é enviar classes para uma biblioteca e usar // css_reference no script C # ou #r na janela Interativa C #

Por exemplo:

#r "D:\\dev\\DbHMonData\\LoadH2Stats\\bin\\Debug\\DbHMonStats.dll"
using DbHMonStats;
beloblotskiy
fonte