A propriedade OutputPath não está definida para este projeto

120

Quando tento compilar meu projeto no modo de depuração x86 no Visual Studio 2008. Estou recebendo esse erro. Quando olhei para o grupo de propriedades do projeto que reclamou, vi o caminho de saída definido.

Aqui está a seção do grupo de propriedades desse arquivo .csproj

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
  <DebugSymbols>true</DebugSymbols>
  <OutputPath>bin\x86\Debug\</OutputPath>
  <DefineConstants>DEBUG;TRACE</DefineConstants>
  <BaseAddress>285212672</BaseAddress>
  <FileAlignment>4096</FileAlignment>
  <DebugType>full</DebugType>
  <PlatformTarget>x86</PlatformTarget>
 <ErrorReport>prompt</ErrorReport>

Alguém pode esclarecer isso?

NOTA: Quando compilei este Debug e Qualquer CPU, ele funcionou.

ATUALIZADO: Erro 1 A propriedade OutputPath não está definida para este projeto. Verifique se você especificou uma combinação válida de configuração / plataforma. Configuração = Plataforma 'Debug' = 'x86'

Amzath
fonte
Ok e qual configuração e plataforma você usa? Depurar + x86 ou algo mais?
Ondrej Tucny 31/01
Sim gerenciador de configuração VS I escolher depuração + x86
Amzath
@DmitryShkuropatsky atualizou a mensagem de erro
Amzath
1
Parece correto. Existe outro projeto na solução que pode causar o erro?
Dmitry Shkuropatsky 31/01
@DmitryShkuropatsky você está certo, foi outro projeto que teve problema. Mas o VS reclamou do projeto que está sendo compilado.
Amzath

Respostas:

214

Eu tive exatamente o mesmo erro depois de adicionar uma nova configuração via ConfigurationManager no Visual Studio.

Aconteceu que quando a configuração 'Produção' foi adicionada para toda a solução (e para cada projeto), o elemento OutputPath não foi adicionado aos arquivos .csproj.

Para corrigir, fui à guia Build nas propriedades do projeto, alterei o OutputPath de \bin\Production\para \bin\Production(excluído à direita \) e salvei as alterações. Isso criou a criação forçada do elemento OutputPath no arquivo .csproj e o projeto foi criado com êxito.

Parece uma falha para mim.

Roman Gudkov
fonte
7
Boa captura desse erro mercurial. Nunca teria imaginado que uma única barra poderia fazer uma diferença tão grande. Tenha um crachá de boa resposta.
Ouflak #
8
No meu caso, a criação de um arquivo proj, a diferença entre any cpue anycpufoi o problema, mas sua postagem me ajudou a ver isso.
Joshua Drake
2
Obrigado Roman, você salvou meu dia ... se eu pudesse votar sua resposta 100 vezes! :) #
Martin Martin
2
Acabei de encontrar isso no VS 2017 v15.6.6, bacon salvo, obrigado!
Angrist
1
@ Joshua Drake, esta é uma questão importante ao usar o VSTS. O Visual Studio online usa 'any cpu', enquanto o visual studio local usa 'anycpy'. Importante para scripts de construção.
FrankyHollywood
27

Você pode ver esse erro no VS 2008 se tiver um projeto em sua solução que faça referência a um assembly que não pode ser encontrado. Isso pode acontecer se a montagem vier de outro projeto que não faz parte da sua solução, mas deveria ser. Nesse caso, basta adicionar o projeto correto à solução para resolvê-lo.

Verifique a seção Referências de cada projeto em sua solução. Se algum deles tiver uma referência com um x vermelho próximo a ele, então você encontrou o seu problema. Essa referência de montagem não pode ser encontrada pela solução.

A mensagem de erro é um pouco confusa, mas já vi isso muitas vezes.

dblood
fonte
2
No meu caso, era um "aviso amarelo"
AXMIM 07/01
26

Se você estiver usando o WiX, veja isso (há um erro) http://www.cnblogs.com/xixifusigao/archive/2012/03/20/2407651.html

Às vezes, novas configurações de compilação são adicionadas ao .wixprojarquivo mais abaixo, ou seja, separadas de suas definições de configuração por outros elementos XML não relacionados.

Simplesmente edite o .wixprojarquivo para que todas as <PropertyGroup>seções que definem suas configurações de compilação sejam adjacentes umas às outras. (Para editar .wixprojno VS2013, clique com o botão direito do mouse no projeto no Solution Explorer, Descarregar projeto, clique com o botão direito do mouse novamente-> Editar YourProject.wixproj. Recarregue após editar o arquivo.)

George
fonte
1
obrigado, isso corrigiu para mim. Eu tive muito comportamento estranho quanto mais configurações adicionei ao projeto. Assim que limpei o arquivo do projeto, tudo funcionou bem. (Este erro foi relatada pela primeira vez em 2012 grande ...?)
Kirschi
Obrigado, este fixa-lo para mim também
PeterD
15

Isso aconteceu comigo porque eu movi a seguinte linha para perto do início do arquivo .csproj:

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets"/>

Ele precisa ser colocado após os PropertyGroups que definem sua Configuração | Plataforma.

Philip Atz
fonte
11

O erro mostrado no visual studio para o projeto (digamos A) não apresenta problemas. Quando olhei para a janela de saída da construção linha por linha para cada projeto, vi que ela estava reclamando de outro projeto (B) que havia sido referido como montagem no projeto A. O projeto B foi adicionado à solução. Mas não havia sido referido no projeto A como referência do projeto, mas como referência de montagem de local diferente. Esse local contém o assembly que foi compilado para a plataforma AnyCpu. Em seguida, removi a referência de montagem do projeto A e adicionei o projeto B como referência. Começou a compilar. Não tenho certeza de como essa correção funcionou.

Amzath
fonte
15
Deffo tente com \ p: Platform = "AnyCPU" em vez de \ p: Platform = "Any CPU". Isso funcionou comigo! Estava olhando para isso há séculos!
Lee Englestone
AnyCPU (sem o espaço) também funcionou para mim. Obrigado Lee.
willem
1
Encontrei o erro ao executar um processo de compilação no TFS 2017, depois de alterar o "Caminho para solução ou packages.config" de um .sln para um .vbproj. Alterar o BuildPlatform para AnyCPU também funcionou para mim. Consulte a nota em "Plataforma" aqui: docs.microsoft.com/en-us/vsts/build-release/tasks/build/…
Mr.Zzyzzx
2
No meu caso, ao iniciar a compilação a partir do TFS, "any cpu"era o valor padrão para BuildPlatform. Mudando para "AnyCPU"resolver o problema.
XouDo 14/10/19
Este é 2020 - AnyCPU vs Any CPU ainda causa problemas. Estou usando o VS2019 e ainda o recebo em novos projetos. MS, por que você está punindo a comunidade de desenvolvedores?
Christian
9

Eu encontrei o mesmo erro, mas o problema acabou sendo porque eu havia criado uma nova configuração em minha solução que não existia em assemblies referenciados a partir de outra solução.

Isso pode ser resolvido abrindo a solução relacionada e adicionando a nova configuração a ela também.

Esta postagem me deu a idéia de verificar os assemblies referenciados depois que eu já confirmei que todos os projetos na minha solução tinham a configuração correta:

http://gabrielmagana.com/2010/04/solution-to-the-outputpath-property-is-not-set-for-this-project/

BK
fonte
7

teve esse problema como saída do Azure DevOps após a configuração para criar o .csproj em vez do .sln no Pipeline de criação.

A solução para mim: edite .csproj do projeto afetado e copie todo o

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCpu' ">

Nó, cole-o e altere a primeira linha da seguinte maneira:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|any cpu' ">

A razão é que, no meu caso, o erro disse

Please check to make sure that you have specified a valid combination of Configuration and Platform for this project.  Configuration='release'  Platform='any cpu'.  

Por que o Azure deseja usar "any cpu" em vez do padrão "AnyCpu" é um mistério para mim, mas esse truque funciona.

Jens Caasen
fonte
Seguindo a sua ideia, descobri que, no meu caso, não precisava fazer alterações no projeto, mas, na etapa do Visual Studio Build no DevOps, configurei o campo Confguration para usar a variável com o valor AnyCpu.
donatasj87 14/04
@ donatasj87 você se importaria de postar o valor total desse campo, por favor?
Jay
1
O valor total é exatamente o mesmo; isso também deve funcionar na construção do TFS. Ele só precisa corresponder ao valor configurado no seu arquivo .csproj. Você pode vê-lo nesta foto: pasteboard.co/JbdvBT5.png
donatasj87
4

Eu tive o mesmo erro, então procurei nas configurações do projeto e na seção "Build" há a opção "Build output path". E o valor estava vazio. Então, eu preenchi o valor "bin \", um erro desapareceu. Isso resolveu meu problema.

Lukas Dvorak
fonte
3

Eu tenho:

  1. Clique com o botão direito do mouse no projeto com o problema -> Descarregar projeto
  2. Clique com o botão direito do mouse no projeto e escolha Editar * .csproj
  3. Copie e cole a configuração da configuração existente que funciona com nome e plataforma de segmentação específicos (eu tinha o Release | x64 ):

    <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
      <OutputPath>bin\x64\Release\</OutputPath>
      <DefineConstants>TRACE</DefineConstants>
      <Optimize>true</Optimize>
      <DebugType>pdbonly</DebugType>
      <PlatformTarget>x64</PlatformTarget>
      <ErrorReport>prompt</ErrorReport>
      <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
      <Prefer32Bit>true</Prefer32Bit>
    </PropertyGroup>
    
  4. Clique com o botão direito do mouse em Projeto -> Recarregar Projeto
  5. Reconstruir projeto / solução
Janis S.
fonte
3

Se você receber esse erro apenas ao tentar compilar seu projeto a partir da linha de comando usando o MSBuild (como no meu caso), a solução é passar o caminho de saída manualmente para o MSBuild com um argumento como /p:OutputPath=MyFolder.

ânion
fonte
2

Outra possibilidade maluca: se você seguir um arranjo simples de controle de origem, colocando Branch \ Main, Main e Release ao lado do outro e de alguma forma acabar adicionando um projeto existente de Main em vez de Branch \ Main (assumindo que sua solução de trabalho seja Branch \ Principal), você pode ver este erro.

A solução é simples: faça referência ao projeto certo!

Keith Hoffman
fonte
2

Encontrei esse problema ao adicionar um projeto a uma solução e depois referenciá-lo de outro projeto na mesma solução - obtive o ícone de aviso amarelo sobre a referência, observe que o caminho estava vazio.

A solução foi semelhante à sugerida pelo @Amzath, meus projetos estavam sendo compilados com diferentes Frameworks de destino, por exemplo. .NET 4.0 vs 4.5.

StuTheDog
fonte
2

No meu caso, o endereço interno do meu aplicativo foi definido para outro computador que foi desligado, então eu o liguei e reiniciei o VS e o problema foi resolvido.

Jesus Manuel
fonte
2

Outra causa: você adiciona uma referência de projeto do projeto A ao projeto B na solução X. No entanto, a solução Y que já contém o projeto A está quebrada agora, até você também adicionar o projeto B à solução Y.

David White
fonte
2

Eu tive o mesmo problema depois de adicionar novas configurações e excluir as configurações "debug" e "release". No meu caso, eu estava usando um arquivo cmd para executar o processo de compilação e publicação, mas o mesmo erro foi gerado. A solução para mim: No arquivo csproj, o seguinte:

<Configuration Condition=" '$(Configuration)' == '' ">Debug< /Configuration>

estava definindo a configuração como "Depuração" se eu não especificasse uma explícita. Depois de alterar o valor do nó de "debug" para minha configuração personalizada, tudo funcionou sem problemas. Espero que isso também ajude quem estiver lendo isso :)

MihaiB
fonte
Os detalhes desta solução são mencionados nesta postagem do fórum. social.msdn.microsoft.com/Forums/vstudio/en-US/...
Ensolarado Tambi
2

Eu tive o mesmo problema, basta editar o .wixproj para que todos os <PropertyGroup Condition=" '$(Configuration)|$(Platform)' ... >elementos fiquem lado a lado.

Isso resolveu meu problema

Sharon
fonte
1

O projeto WiX que eu estava usando era difícil no gerenciador de configuração x64em geral. Ao criar o projeto de Ação Personalizada para a solução, ele padronizou tudo para x86dentro do .csprojarquivo. Então, eu descarreguei o projeto, editei-o alterando tudo x86para x64, salvei, recarreguei e estava pronto para prosseguir.

Não entendo por que tive que fazer isso. O gerenciador de configuração foi definido para compilar como x64, mas não seria definido no csprojarquivo :(

kayleeFrye_onDeck
fonte
0

Depois de tentar todas as outras sugestões postadas aqui, descobri que a solução era remover a seguinte seção do .csprojarquivo:

  <ItemGroup>
    <Service Include="{808359B6-6B82-4DF5-91FF-3FCBEEBAD811}" />
  </ItemGroup>

Aparentemente, este serviço do projeto original (indisponível na máquina local) estava interrompendo todo o processo de compilação, mesmo que não fosse essencial para a compilação.

Molho Especial
fonte
0

Eu tive esse problema depois de adicionar uma nova plataforma ao meu projeto. No meu caso, o arquivo .csproj estava sob o controle de origem do Perforce e era somente leitura. Eu fiz o check-out, mas o VS não pegou a alteração até que eu a reiniciei.

Flot2011
fonte
0

Eu tive um problema semelhante em um projeto Xamarin. Talvez seja um caso raro, mas no caso de alguém ter o problema. minha estrutura de projeto era como abaixo

  • O projeto xamarin.Android teve uma referência do projeto xamarin.android.library.
  • Eu criei um plugin usando algum código do projeto android.library.
  • Agora, aqui está o problema. se você incluir referência de projeto ou instalação de nuget no projeto da biblioteca xamarin.android. Você receberá esse erro. Os desenvolvedores assumem que o código estava dentro do projeto Android.Library e eu devo fazer referência ao novo plug-in neste projeto. NÃO!
  • você deve adicionar uma referência no projeto principal do Android. porque o plugin-> biblioteca-> a saída do projeto principal não é produzida.
batmaci
fonte