Error "properti outputpath tidak disetel untuk proyek ini"

90

Saya memiliki solusi multi proyek dalam Visual Studio 2008. Saya baru saja menambahkan Konfigurasi baru yang disebut Release-VersionIncrement ke solusi, menentukan konfigurasi "gunakan rilis" sebagai dasar. Semua file proyek diperbarui dengan konfigurasi itu. Namun, ketika saya mencoba mengompilasi proyek tertentu menggunakan konfigurasi ini, saya mendapatkan kesalahan berikut:

Kesalahan 5 Properti OutputPath tidak ditetapkan untuk proyek ini. Harap periksa untuk memastikan bahwa Anda telah menentukan kombinasi Konfigurasi / Platform yang valid. Konfigurasi = 'Release-VersionIncrement' Platform = 'AnyCPU' C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.target 539 9 DataConversion

Apa yang sedang terjadi disini? Proyek dikompilasi dengan baik dalam konfigurasi Rilis atau Debug.

laconicdev.dll
sumber
6
Saya berjuang dengan ini selama berjam-jam sampai saya menyadari bahwa daftar drop-down dalam definisi build TFS memiliki "Semua CPU" daripada "AnyCPU" !!!!
The Muffin Man
1
Di VS2012, drop-down dalam konfigurasi build adalah "Semua CPU", tetapi di dalam file .csproj adalah "AnyCPU", jadi di Jenkins atau command line, gunakan "AnyCPU" akan berfungsi.
Jirong Hu

Jawaban:

94

Biasanya ini terjadi ketika properti OutputPath dari file proyek kosong. File proyek hanyalah MSBuild file . Untuk mengedit dalam Visual Studio: Klik kanan pada proyek, pilih "Unload project" lalu klik kanan pada proyek yang tidak dimuat dan pilih "Edit ...".

Cari grup properti Release-Versionincrement. Seharusnya terlihat seperti ini

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release-VersionIncrement|AnyCPU' ">
  <OutputPath>bin\Release-VersionIncrement\</OutputPath>
  <DefineConstants>TRACE</DefineConstants>
  <Optimize>true</Optimize>
  <DebugType>pdbonly</DebugType>
  <PlatformTarget>AnyCPU</PlatformTarget>
  <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
  <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
  <ErrorReport>prompt</ErrorReport>
</PropertyGroup>

Yang penting di sana itu OutputPath, apakah itu ada untuk file proyek Anda? Jika tidak, tambahkan dan coba lagi.

Sayed Ibrahim Hashimi
sumber
33
Jika jalur keluaran benar dan Anda masih menerima kesalahan ini, Anda mungkin memiliki referensi ke rakitan atau proyek lain yang sudah tidak ada lagi. Bersihkan referensi lama. Itulah pengalaman saya.
John K
3
Saya baru saja menemukan kesalahan ini, dan harus memodifikasi file proyek secara langsung. Meskipun halaman properti proyek mengatakan "Semua CPU", properti itu awalnya dikosongkan dan saya mengambil pengaturan Platform = BPC dari variabel lingkungan saya. Setelah saya memperbaikinya dan mengatur / mengatur ulang halaman properti dari Any CPU ke x86 dan kembali, itu masih tidak bisa dibangun, mengklaim platform sekarang 'x86' (?!?). Benar saja, saya mengikuti langkah-langkah di sini dan ternyata sekarang disetel ke x86, jadi saya mengeditnya secara manual dan sekarang semua orang senang lagi. Terima kasih teman-teman!
DaveN59
2
File proyek saya memiliki PropertyGroup yang diharapkan, dengan OutputPath yang tidak kosong, dan saya mendapatkan kesalahan ini. Satu-satunya hal yang saya perhatikan adalah bahwa PropertyGroup untuk konfigurasi khusus ini adalah elemen pertama di bawah simpul akar dalam file, dan atribut Kondisi tidak memiliki spasi di depan dan di belakang, tidak seperti semua Kondisi konfigurasi lainnya. Pada titik ini, saya memindahkan elemen ini ke bawah beberapa konfigurasi lain (tidak yakin mengapa itu penting, hanya mencoba hal-hal), dan menambahkan spasi dalam kondisi tersebut. Setelah ini berhasil. Tidak yakin mana yang membuat perbedaan.
Seth Flowers
2
Saya punya masalah lain. Saya menggunakan SlowCheetah untuk membuat transformasi konfigurasi untuk proyek windows saya. Konfigurasi tidak memiliki spasi kosong seperti yang disarankan @sethflowers. Saya menambahkan itu tetapi itu tidak membantu. Saya melihat bahwa ada grup properti lain di antara konfigurasi tersebut. Jadi bereskan itu (cukup letakkan grup properti di bawah grup properti konfigurasi proyek) dan kemudian masalahnya hilang. Terima kasih atas semua saran di sini. Ini menghemat waktu saya !!!
LockTar
7
Deffo mencobanya dengan \ p: Platform = "AnyCPU" alih-alih \ p: Platform = "Semua CPU". Itu berhasil dari saya! Sudah melihat ini sejak lama!
Lee Englestone
78

Saya juga melihat kesalahan ini ketika agen build kami dikonfigurasi untuk menjalankan platform " Semua CPU " (dengan spasi seperti yang ditampilkan di Visual Studio) daripada " AnyCPU " (satu kata seperti yang ditentukan dalam file proyek).

Richard Dingwall
sumber
5
Saya mengalami masalah yang sama, tampaknya pada tingkat solusi, "Semua CPU" valid, tetapi pada tingkat proyek, itu adalah "AnyCPU". Dengan kata lain, msbuild myproj.sln /p:Configuration=Debug /p:Platform="Any CPU"baik-baik saja, namun ketika membangun proyek, saya harus menghilangkan ruang di Any CPU: msbuild myproj.proj1.csproj /p:Configuration=Debug /p:Platform=AnyCPUuntuk menekan kesalahan properti Outputpath.
Emil G
2
Luar biasa, dan PITA yang luar biasa untuk konfigurasi CI. Saya telah berjuang dengan ini selama berhari-hari.
Jeremy Holovacs
Saya mengalami kesalahan ini ketika saya tidak dapat membangun di server build utama dan alternatif yang saya pilih melewati "Semua CPU" alih-alih "AnyCPU". Setelah memeriksa ada beberapa perbedaan dalam nomor versi MSBUILD dan perangkat lunak lainnya. Terima kasih atas jawaban Anda,
Gilles
1
Saya tidak percaya ruang adalah pelakunya!
Alexandra
36

Saya memiliki masalah yang sama ketika saya menggunakan MSBuild pertama kali. Solusi saya adalah: gunakan properti OutputPath secara pasti. Seperti ini:

msbuild XXX.csproj /p:OutputPath=bin\Debug.
Peter Mortensen
sumber
Ini memecahkan masalah saya untuk pembuatan Layanan Cloud Azure TeamCity. +1
starmandeluxe
Begitu pula bagi saya dengan VSO's CI Build.
StriplingWarrior
11

Dalam kasus kami, kami menjalankan skrip build pada kotak pengembang HP kami. HP memiliki beberapa variabel lingkungan yang telah mereka atur untuk tujuan mereka sendiri dan salah satunya adalah PLATFORM (tampaknya digunakan untuk "HP Easy Setup").

Penghapusan variabel lingkungan PLATFORM berhasil.

Anda juga dapat menguji skrip build Anda di masa mendatang dengan menentukan platformnya, yaitu
msbuild /p:Platform=AnyCPU.

Boggin
sumber
Ini menarik perhatian saya di laptop HP baru saya - terima kasih @Boggin - ini tidak akan terpikir oleh saya.
Rob Cooper
9

Jika Visual Studio secara khusus mengeluh bahwa "Platform = 'BPC'" maka Anda dapat dengan mudah memperbaikinya dengan menghapus variabel lingkungan "Platform".

Hapus anak nakal ini.

Sekarang restart Visual Studio dan Anda siap melakukannya.

Scott S.
sumber
6

Seperti yang diisyaratkan oleh " Richard Dingwall ", masalahnya terkait dengan VS menggunakan versi tampilan " Semua CPU ", bukan versi MSBuild yang sebenarnya bertuliskan " AnyCPU "

Masuk ke Build / New Build Definition atau Edit Build Definition -> Proses -> Konfigurasi untuk membangun, buka dialog pemilihan konfigurasi dan di " Platform " alih-alih memilih " Semua CPU ", tambahkan " AnyCPU " secara manual

Robert Hoffmann
sumber
6

Seperti yang telah dikatakan, OutputPath harus disetel DAN harus ditempatkan sebelumnya <Import Project="$(WixTargetsPath)" /> di file .wixproj

OlegMax
sumber
Yang ini terkait dengan masalah saya, saya menambahkan konfigurasi baru untuk proyek wix setelah saya membuatnya dan konfigurasi baru ditambahkan di akhir file sehingga semua PropertyGroup terkait ke konfigurasi baru itu ditempatkan SETELAH impor ini, memindahkannya ke bagian atas, tepat di samping yang lain, membuatnya bekerja untuk saya.
Eugenio Miró
4

Saya telah menghapus Platformvariabel lingkungan (apakah BNB atau sesuatu seperti itu). Masalahnya hilang.

duri
sumber
1
Sayangnya bahkan setelah menghapus variabel lingkungan Platform itu memerlukan reboot penuh!
79E09796
4

Saya menambahkan platform x64 ke solusi saya hari ini, ketika saya mengalami masalah ini.

Dalam kasus saya, kesalahan terbaca:

Membuat $ / ProjectDirectory / ProjectName.csproj untuk target default. c: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.t target (484): Properti OutputPath tidak disetel untuk proyek ProjectName.csproj '. Harap periksa untuk memastikan bahwa Anda telah menentukan kombinasi yang valid dari Konfigurasi dan Platform untuk proyek ini. Konfigurasi = 'Debug' Platform = 'x64'. Anda mungkin melihat pesan ini karena Anda mencoba membuat proyek tanpa file solusi, dan telah menentukan Konfigurasi atau Platform non-default yang tidak ada untuk proyek ini.

Saya tahu OutputPathseharusnya baik-baik saja, karena ini adalah solusi VS yang sudah ada dan berfungsi. Jadi saya pindah ke petunjuk berikutnya - "kombinasi yang valid dari Konfigurasi dan Platform".

Aha! Visual Studio sedang mencoba membangun Configuration='Debug', Platform='x64'. Melihat file proyek saya, saya menyadari bahwa x64 tidak terdaftar sebagai salah satu platform yang memungkinkan. Dengan kata lain, saya memiliki entri di bawah ini (dipersingkat):

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
      <PlatformTarget>x86</PlatformTarget>
      <OutputPath>bin\x86\Debug\</OutputPath>  
      . . .  
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
      <PlatformTarget>x86</PlatformTarget>
      <OutputPath>bin\x86\Release\</OutputPath>    
      . . .
  </PropertyGroup>

Perbaiki mudah: cukup tambahkan entri x64!

Saya menyalin / menempel entri x86, dan mengubahnya untuk menggunakan x64. Perhatikan saya juga memodifikasi jalur sehingga ini tidak menimpa build x86:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
      <PlatformTarget>x64</PlatformTarget>
      <OutputPath>bin\x64\Debug\</OutputPath>    
      . . .
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
      <PlatformTarget>x64</PlatformTarget>
      <OutputPath>bin\x64\Release\</OutputPath>    
      . . .
  </PropertyGroup>
Gustavo Mori
sumber
3

Saya berjuang dengan ini untuk sementara waktu dan kemudian juga membongkar, membangun, dan kemudian memuat ulang proyek yang melanggar dalam solusi, dan kemudian MSBuild berfungsi dengan benar.

Glenn
sumber
3

Sebagai Scott S, saya harus menghapus variabel lingkungan "Platform" .

Kemudian restart VS, dan tidak apa-apa: tidak ada lagi pesan kesalahan ...

M Denis
sumber
Ini berfungsi untuk saya ketika saya menghapus platform yang telah saya tentukan di langkah MSBuild Build vNext saya juga.
4imble
2

Masalahnya berkaitan dengan konfigurasi proyek saya. Berikut skenarionya:

Referensi Solusi A:

Referensi Proyek X Proyek Y
Proyek Y

Referensi Solusi B (yang saya coba buat):

Proyek X Proyek Z

Solusi saya adalah membuat konfigurasi dengan nama yang sama untuk Solusi A, membangunnya kembali, dan kemudian membangun kembali Solusi B. Ini memperbaiki masalah.

laconicdev.dll
sumber
1
Saya mengalami kesalahan yang sama dan penyelesaian ini adalah satu-satunya hal yang berhasil untuk saya. Pada dasarnya, saya memiliki konfigurasi platform solusi "Win32" yang membangun proyek silverlight dengan konfigurasi platform "Semua CPU" dan juga proyek aplikasi web dengan konfigurasi platform "x86" yang menjadi tuan rumah proyek silverlight. Saya harus menambahkan konfigurasi platform proyek baru ke proyek silverlight, "x86" (dan menyimpan yang lama sebagai konfigurasi default) agar msbuild berfungsi seperti yang diharapkan.
Rami A.
2

Saya mendapat pesan kesalahan yang sama. Itu disebabkan oleh referensi ke proyek yang dibongkar dan tidak diperlukan oleh linker (jika tidak maka akan gagal pada waktu kompilasi). Menghapus referensi yang melanggar menyelesaikan masalah.

Gishe
sumber
2

Dalam kasus saya (VS2010), saya menghapus string di kotak "OutputPath" yang ada di tab "Build" dan membiarkannya kosong. Kemudian saya membangun kembali solusinya. Build berhasil dan VS telah memasukkan direktori "./" ke dalam "OutputPath". Saya mengganti direktori saat ini "./" dengan path saya ("bin \ x64 \ Release \" - cukup untuk mengatakan bahwa ini adalah path folder yang dikeluhkan VS) dan membangun kembali berhasil lagi.

Tomasz Stypich
sumber
1

Dalam kasus saya, OutputPath ditetapkan sebagai properti dalam file proyek. Tetapi membongkar, memuat ulang, dan kemudian membangun kembali memperbaikinya.

farkashon
sumber
1

Ketika saya menambahkan konfigurasi solusi baru dalam solusi saya, saya mendapat pesan kesalahan, "Properti OutputPath tidak disetel untuk proyek X. Harap periksa untuk memastikan bahwa Anda telah menentukan kombinasi yang valid dari Konfigurasi dan Platform untuk proyek ini. Konfigurasi = 'QA 'Platform =' AnyCPU '. Kesalahan ini mungkin juga muncul jika beberapa proyek lain mencoba mengikuti referensi proyek-ke-proyek untuk proyek ini, proyek ini telah dibongkar atau tidak termasuk dalam solusi, dan proyek referensi tidak membangun menggunakan Konfigurasi atau Platform yang sama atau setara. ProjectY ".

Dalam kasus saya, masalah adalah karena bagian yang disorot dari deskripsi kesalahan. Bagian Project X dari solusi saya memiliki referensi proyek ke ProjectY dari solusi lain (cabang berbeda).

Saya telah menyelesaikan masalah ini dengan memodifikasi proyek X untuk menggunakan referensi proyek ke ProjectY dalam solusi saat ini. Semoga ini bisa membantu seseorang yang mengalami masalah serupa.

BNJ
sumber
0

Dalam kasus saya, blok XML "PropertyGroup" baru dibuat di bagian bawah dokumen. Saya baru saja menggantinya setelah tag "PropertyGroup" lainnya dan ini menyelesaikan masalah.

Alexander Pavlenko
sumber
0

Saya membuat proyek baru dalam solusi baru yang mengacu pada proyek yang sudah ada. Kesalahan ini terjadi ketika saya menambahkan proyek yang ada (katakanlah proyek 1) dan mencoba membangun tanpa menambahkan proyek lain yang referensi proyek 1.

Pastikan saja semua proyek terkait ditambahkan ke solusi baru dan kesalahan menghilang.

Ike
sumber
0

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
0

Jika Anda memutuskan untuk menetapkan OutputPath sebagai param, dan jalur Anda seperti: bin\Release\\maka ingatlah untuk menambahkan \di akhir seperti itu: /p:OutputPath=bin\Release\\\\perlu beberapa saat bagi saya untuk menyadari bahwa itulah masalahnya

Marysia
sumber
0

Saya memiliki masalah yang sama. Saya memperbaikinya dengan membersihkan dan membangun kembali proyek.

pengguna5920105
sumber
0

Saya memiliki masalah yang sama, dan satu-satunya solusi yang membantu adalah mengatur Konfigurasi Bangun Secara Manual di setiap Proyek NCrunch.

Buka Jendela NCrunch, di mana Anda dapat melihat Status dari setiap Build dan di mana Anda dapat melihat bahwa build tersebut gagal. Klik kanan pada proyek yang gagal untuk membangun dan klik pada "mengkonfigurasi komponen yang dipilih" di sana Anda melihat di bawah "Pengaturan Bangun" properti "Gunakan konfigurasi pembangunan" setel ke misalnya "Debug" dan properti "Gunakan platform pembangunan" setel ke misalnya "AnyCPU". (Harap dicatat bahwa pengaturan build dan konfigurasi yang Anda tetapkan harus ada di Pengaturan konfigrasi Anda)

Lakukan ini untuk semua proyek Anda, tetapi tidak untuk proyek pengujian Anda. Setelah ini semuanya bekerja dengan baik untuk saya.

squadwuschel
sumber
0

Saya memiliki masalah yang sama, saya memperbaikinya dengan menambahkan Konfigurasi yang hilang ke proyek yang gagal.

BUILD -> Pengelola Konfigurasi ->

Di bawah Kolom Konfigurasi Tambahkan

Catatan: Ini hanya terjadi karena saya memiliki konfigurasi khusus dan proyek yang baru dibuat tidak memiliki konfigurasi.

pmeyer
sumber
0

Jika ada yang mendapatkan ini di log NCrunch-nya, periksa apakah nilai yang PropertyGroupmenentukan 'Debug' / 'Rilis' dan 'AnyCPU' / 'x86' terletak sebelum grup properti menggunakan nilai tersebut dalam kondisinya.

<PropertyGroup>
    <!-- this one first -->
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <XXX>...</XXX>
  </PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <XXX>...</XXX>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <XXX>...</XXX>
</PropertyGroup>

Bekerja untuk saya.

Waescher
sumber
0

Dalam kasus saya, saya mencoba memindahkan grup properti yang berisi konfigurasi kustom saya di bawah yang standar. Itu menyelesaikannya untuk saya.

ermenegild0
sumber
0

Baru saja melakukan ini dengan VS2015 Professional:

Properti OutputPath tidak disetel untuk proyek 'xxxxx.csproj'. Harap periksa untuk memastikan bahwa Anda telah menentukan kombinasi yang valid dari Konfigurasi dan Platform untuk proyek ini.

Ini juga merupakan juggling multi-proyek antara debug / rilis dan target yang berbeda. Saya telah mengutak-atik konfigurasi build di beberapa titik dan saya tahu itu dapat mengacaukan VS, jadi saya menariknya kembali dari repo. Masih tidak bagus. OutputPath telah disetel, tidak ada lagi perbedaan dengan kondisi yang diketahui baik sehingga pasti ada yang salah dengan instalasi lokal saya.

Membuka penginstal VS2015 dan mengklik "Perbaiki", dan voila ... kembali normal (setidaknya sejauh ini!)

Etherman
sumber
0

Bagi saya itu adalah baris dalam konfigurasi paket NuGet. Singkirkan semua paket yang terkait dalam file proyek Anda dan lihat hidup kembali (simpan hasil edit). Daripada membangunnya lagi bagian demi bagian. Saya membawanya ke baris ini yang harus saya hapus:

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

Saya mendapat masalah setelah pembaruan paket NuGet (terutama hal-hal penganalisis FxCop).

Martin Maat
sumber