Properti OutputPath tidak disetel untuk proyek ini

120

Ketika saya mencoba untuk mengkompilasi proyek saya dari mode debug x86 di Visual Studio 2008. Saya mendapatkan kesalahan ini. Ketika saya melihat grup properti dari proyek yang mengeluh, saya melihat jalur keluaran disetel.

Berikut adalah bagian grup properti untuk file .csproj itu

<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>

Adakah yang bisa menjelaskan hal ini?

CATATAN: Ketika saya mengkompilasi Debug ini dan semua CPU itu bekerja.

DIPERBARUI: Kesalahan 1 Properti OutputPath tidak ditetapkan untuk proyek ini. Harap periksa untuk memastikan bahwa Anda telah menentukan kombinasi Konfigurasi / Platform yang valid. Konfigurasi = 'Debug' Platform = 'x86'

Amzath
sumber
Ok dan konfigurasi dan platform apa yang Anda gunakan? Debug + x86 atau yang lainnya?
Ondrej Tucny
Ya Manajer konfigurasi VS Saya memilih debug + x86
Amzath
@DmitryShkuropatsky memperbarui pesan kesalahan
Amzath
1
Ini terlihat benar. Apakah ada proyek lain dalam solusi yang dapat menyebabkan kesalahan?
Dmitry Shkuropatsky
@DmitryShkuropatsky Anda benar itu adalah proyek lain yang bermasalah. Tetapi VS mengeluh tentang proyek yang sedang disusun
Amzath

Jawaban:

214

Saya mengalami kesalahan yang sama persis setelah menambahkan konfigurasi baru melalui ConfigurationManager di Visual Studio.

Ternyata ketika konfigurasi 'Produksi' ditambahkan untuk seluruh solusi (dan setiap proyek), elemen OutputPath tidak ditambahkan ke file .csproj.

Untuk memperbaikinya, saya pergi ke tab Build di properti proyek, mengubah OutputPath dari \bin\Production\menjadi \bin\Production(menghapus jejak \) dan menyimpan perubahan. Ini memaksa pembuatan elemen OutputPath dalam file .csproj dan proyek telah berhasil dibangun.

Kedengarannya seperti kesalahan bagi saya.

Roman Gudkov
sumber
7
Tangkapan bagus atas kesalahan lincah ini. Tidak akan pernah menyangka bahwa satu tebasan bisa membuat perbedaan sebesar itu. Memiliki lencana Jawaban yang Baik.
ouflak
8
Dalam kasus saya, membuat file proj, perbedaan antara any cpudan anycpumasalahnya, tetapi posting Anda membantu saya melihatnya.
Joshua Drake
2
Terima kasih Roman, Anda telah menyelamatkan hari saya ... andai saja saya dapat memberi suara positif pada jawaban Anda 100 kali! :)
Martin
2
Baru saja menemukan ini di VS 2017 v15.6.6, bacon disimpan, terima kasih!
Angrist
1
@Joshua Drake, ini adalah masalah penting saat menggunakan VSTS. Visual studio online menggunakan 'any cpu', sedangkan visual studio lokal menggunakan 'anycpy'. Penting untuk skrip build.
FrankyHollywood
27

Anda dapat melihat kesalahan ini di VS 2008 jika Anda memiliki proyek dalam solusi Anda yang mereferensikan rakitan yang tidak dapat ditemukan. Ini dapat terjadi jika perakitan berasal dari proyek lain yang bukan merupakan bagian dari solusi Anda tetapi seharusnya menjadi bagian dari solusi Anda. Dalam hal ini hanya menambahkan proyek yang benar ke solusi akan menyelesaikannya.

Periksa bagian Referensi dari setiap proyek dalam solusi Anda. Jika salah satu dari mereka memiliki referensi dengan x merah di sebelahnya, maka Anda telah menemukan masalah Anda. Referensi perakitan itu tidak dapat ditemukan oleh solusi.

Pesan kesalahannya agak membingungkan tetapi saya telah melihatnya berkali-kali.

dblood.dll
sumber
2
Dalam kasus saya itu adalah "peringatan kuning"
AXMIM
26

Jika Anda menggunakan WiX, lihat ini (ada bug) http://www.cnblogs.com/xixifusigao/archive/2012/03/20/2407651.html

Terkadang konfigurasi build baru ditambahkan ke .wixprojfile di bagian bawah file, yaitu, dipisahkan dari definisi konfigurasi saudara kandungnya oleh elemen XML lain yang tidak terkait.

Cukup edit .wixprojfile tersebut sehingga semua <PropertyGroup>bagian yang menentukan konfigurasi build Anda berdekatan satu sama lain. (Untuk mengedit .wixprojdi VS2013 klik kanan pada proyek di Solution Explorer, Unload proyek, klik kanan lagi-> Edit YourProject.wixproj. Reload setelah mengedit file.)

George
sumber
1
terima kasih, ini memperbaikinya untuk saya. Saya memiliki banyak perilaku aneh, semakin banyak konfigurasi yang saya tambahkan ke proyek. Segera setelah saya membersihkan file proyek semuanya bekerja dengan baik. (Bug ini pertama kali dilaporkan pada tahun 2012? Hebat ...)
Kirschi
Terima kasih, ini juga memperbaikinya untuk saya
PeterD
15

Ini terjadi pada saya karena saya telah memindahkan baris berikut ke awal file .csproj:

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

Ini harus ditempatkan setelah PropertyGroups yang menentukan Konfigurasi | Platform Anda.

Philip Atz
sumber
11

Kesalahan yang ditampilkan di studio visual untuk proyek (Katakanlah A) tidak memiliki masalah. Ketika saya melihat jendela keluaran untuk membangun baris demi baris untuk setiap proyek, saya melihat bahwa itu mengeluh tentang proyek lain (B) yang telah disebut sebagai perakitan dalam proyek A. Proyek B ditambahkan ke dalam solusi. Tetapi itu tidak dirujuk dalam proyek A sebagai referensi proyek, melainkan sebagai referensi perakitan dari lokasi yang berbeda. Lokasi itu berisi perakitan yang dikompilasi untuk Platform AnyCpu. Kemudian saya menghapus referensi perakitan dari proyek A dan menambahkan proyek B sebagai referensi. Ini mulai menyusun. Namun tidak yakin bagaimana perbaikan ini bekerja.

Amzath
sumber
15
Deffo mencobanya dengan \ p: Platform = "AnyCPU" alih-alih \ p: Platform = "Semua CPU". Itu berhasil dari saya! Sudah melihat ini sejak lama!
Lee Englestone
AnyCPU (Tanpa ruang) juga berfungsi untuk saya. Terima kasih Lee.
willem
1
Saya mengalami kesalahan saat menjalankan proses pembuatan di TFS 2017, setelah saya mengubah "Path to solution or packages.config" dari .sln menjadi .vbproj. Mengubah BuildPlatform ke AnyCPU juga berhasil untuk saya. Lihat catatan di bawah "Platform" di sini: docs.microsoft.com/en-us/vsts/build-release/tasks/build/…
Mr. Zzyzzx
2
Dalam kasus saya, saat meluncurkan build dari TFS, "any cpu"adalah nilai default untuk BuildPlatform. Mengubah untuk "AnyCPU"memecahkan masalah.
XouDo
Ini adalah tahun 2020 - AnyCPU vs Semua CPU masih menjadi pembuat masalah. Saya menggunakan VS2019 dan masih mendapatkan ini di proyek baru. MS mengapa Anda menghukum komunitas pengembang?
Christian
9

Saya mengalami kesalahan yang sama tetapi masalahnya ternyata karena saya telah membuat konfigurasi baru dalam solusi saya yang tidak ada di rakitan yang direferensikan dari solusi lain.

Ini dapat diselesaikan dengan membuka solusi terkait dan menambahkan konfigurasi baru ke dalamnya juga.

Posting ini memberi saya ide untuk memeriksa rakitan yang direferensikan setelah saya mengonfirmasi bahwa semua proyek dalam solusi saya memiliki konfigurasi yang benar:

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

BK
sumber
7

memiliki masalah ini sebagai keluaran dari Azure DevOps setelah menyetel untuk membangun .csproj, bukan .sln di Build Pipeline.

Solusi untuk saya: Edit .csproj dari proyek yang terpengaruh, lalu salin keseluruhan

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

Node, tempel, lalu ubah baris pertama seperti berikut:

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

Alasannya adalah, dalam kasus saya kesalahan tersebut mengatakan

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

Mengapa Azure ingin menggunakan "any cpu" daripada default "AnyCpu" adalah misteri bagi saya, tetapi peretasan ini berhasil.

Jens Caasen
sumber
Dengan mengikuti ide Anda, saya menemukan bahwa dalam kasus saya, saya tidak perlu membuat perubahan dalam proyek, tetapi dalam langkah Visual Studio Build saya di DevOps, saya menyiapkan bidang Confguration untuk menggunakan variabel dengan nilai AnyCpu.
donatasj87
@ donatasj87 maukah Anda memposting nilai penuh bidang ini?
Jay
1
Nilai penuhnya persis sama, ini juga harus berfungsi di build TFS. Itu hanya perlu cocok dengan nilai yang diatur di file .csproj Anda. Anda dapat melihatnya di gambar ini: pasteboard.co/JbdvBT5.png
donatasj87
4

Saya memiliki kesalahan yang sama, jadi saya melihat pengaturan proyek dan di sana di bagian "Build" adalah opsi "Build output path". Dan nilainya kosong. Jadi saya mengisi nilai "bin \" kesalahan menghilang. Itu memecahkan masalah saya.

Lukas Dvorak
sumber
3

Saya sudah:

  1. Klik kanan pada proyek yang bermasalah -> Bongkar Proyek
  2. Klik kanan pada proyek dan pilih Edit * .csproj
  3. Salin-tempel konfigurasi dari konfigurasi yang ada yang berfungsi dengan nama tertentu dan platform penargetan (saya memiliki Rilis | 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. Proyek klik kanan -> Muat Ulang Proyek
  5. Buat ulang proyek / solusi
Janis S.
sumber
3

Jika Anda mendapatkan kesalahan ini hanya ketika Anda mencoba untuk mengkompilasi proyek Anda dari baris perintah menggunakan MSBuild (seperti dalam kasus saya) maka solusinya adalah dengan meneruskan jalur keluaran secara manual ke MSBuild dengan argumen seperti /p:OutputPath=MyFolder.

anion
sumber
2

Kemungkinan gila lainnya: Jika Anda mengikuti pengaturan kontrol sumber sederhana dengan meletakkan Branch \ Main, Main, dan Release di samping satu sama lain dan Anda entah bagaimana akhirnya menambahkan proyek yang ada dari Main daripada Branch \ Main (dengan asumsi solusi kerja Anda adalah Branch \ Utama), Anda mungkin melihat kesalahan ini.

Solusinya sederhana: rujuk proyek yang tepat!

Keith Hoffman
sumber
2

Saya mengalami masalah ini saat menambahkan proyek ke solusi kemudian mereferensikannya dari proyek lain dalam solusi yang sama - mendapatkan ikon peringatan kuning di atas referensi, perhatikan bahwa jalurnya kosong.

Solusinya mirip dengan apa yang disarankan @Amzath, proyek saya sedang dikompilasi dengan Kerangka Target yang berbeda, misalnya. .NET 4.0 vs 4.5.

StuTheDog
sumber
2

Dalam kasus saya, alamat yang dibangun dari aplikasi saya diatur ke komputer lain yang dimatikan jadi saya menyalakannya dan memulai ulang VS dan masalah terpecahkan.

Yesus Manuel
sumber
2

Penyebab lain: Anda menambahkan referensi proyek dari proyek A ke proyek B dalam solusi X. Namun, solusi Y yang sudah berisi proyek A sekarang rusak, hingga Anda juga menambahkan proyek B ke solusi Y.

David White
sumber
2

Saya mengalami masalah yang sama setelah saya menambahkan konfigurasi baru dan menghapus konfigurasi "debug" dan "rilis". Dalam kasus saya, saya menggunakan file cmd untuk menjalankan proses membangun dan menerbitkan, tetapi kesalahan yang sama terjadi. Solusi untuk saya: Di file csproj berikut ini:

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

sedang menyetel Konfigurasi ke "Debug" jika saya tidak menentukan yang eksplisit. Setelah mengubah nilai node dari "debug" ke konfigurasi kustom saya, semuanya bekerja dengan lancar. Semoga ini juga akan membantu siapa pun yang membaca ini :)

MihaiB
sumber
Detail untuk solusi ini disebutkan dalam posting forum ini. social.msdn.microsoft.com/Forums/vstudio/en-US/…
Sunny Tambi
2

Saya memiliki masalah yang sama, Cukup edit .wixproj agar semua <PropertyGroup Condition=" '$(Configuration)|$(Platform)' ... >elemen berdampingan.

Itu memecahkan masalah saya

Sharon
sumber
1

Proyek WiX yang saya gunakan telah diatur dengan keras di manajer konfigurasi untuk x64seluruh papan. Saat membuat proyek Tindakan Kustom untuk solusi, semuanya default ke x86dalam .csprojfile. Jadi saya membongkar proyek, mengeditnya dengan mengubah semua x86menjadi x64, menyimpan, memuat ulang, dan baik untuk dilakukan setelah itu.

Saya tidak mengerti mengapa saya harus melakukan ini. Manajer konfigurasi disetel untuk membangun sebagai x64, tetapi tidak akan disetel di csprojfile :(

kayleeFrye_onDeck
sumber
0

Setelah mencoba semua saran lain yang diposting di sini, saya menemukan solusi bagi saya adalah menghapus bagian berikut dari .csprojfile:

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

Rupanya layanan ini dari proyek asli (tidak tersedia di mesin lokal) menghentikan seluruh proses pembangunan, meskipun itu tidak penting untuk kompilasi.

Saus Khusus
sumber
0

Saya mendapat masalah ini setelah menambahkan platform baru ke proyek saya. Dalam kasus saya, file .csproj berada di bawah kendali sumber Perforce dan hanya-baca. Saya memeriksanya tetapi VS tidak menangkap perubahan sampai saya memulainya kembali.

Flot2011
sumber
0

Saya memiliki masalah serupa di Proyek Xamarin. Ini mungkin kasus yang jarang terjadi, tetapi jika ada orang lain yang mengalami masalah ini. struktur proyek saya seperti di bawah ini

  • Proyek xamarin.Android memiliki referensi dari proyek xamarin.android.library.
  • Saya membuat plugin menggunakan beberapa kode dari proyek android.library.
  • Sekarang inilah masalahnya. jika Anda menambahkan referensi proyek atau instalasi nuget pada proyek perpustakaan xamarin.android. Anda akan mendapatkan kesalahan ini. Pengembang berasumsi bahwa kode itu ada di dalam proyek Android.Library dan saya harus mereferensikan plugin baru pada proyek ini. TIDAK!
  • Anda harus menambahkan referensi pada proyek Android Utama. karena plugin-> library-> keluaran proyek utama tidak diproduksi.
batmaci.dll
sumber