ไม่ได้ตั้งค่าคุณสมบัติ OutputPath สำหรับโครงการนี้


120

เมื่อฉันพยายามคอมไพล์โครงการของฉันจากโหมดดีบัก x86 ใน Visual Studio 2008 ฉันได้รับข้อผิดพลาดนี้ เมื่อฉันดูกลุ่มอสังหาริมทรัพย์ของโครงการที่ร้องเรียนฉันเห็นว่ามีการตั้งค่าเส้นทางเอาต์พุต

นี่คือส่วนกลุ่มคุณสมบัติสำหรับไฟล์. 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>

มีใครให้ความกระจ่างเรื่องนี้ได้ไหม?

หมายเหตุ: เมื่อฉันรวบรวม Debug นี้และ CPU ใด ๆ ก็ใช้งานได้

ปรับปรุง:ข้อผิดพลาด 1 ไม่ได้ตั้งค่าคุณสมบัติ OutputPath สำหรับโครงการนี้ โปรดตรวจสอบให้แน่ใจว่าคุณได้ระบุชุดค่าผสมการกำหนดค่า / แพลตฟอร์มที่ถูกต้อง Configuration = 'Debug' Platform = 'x86'


ตกลงคุณใช้คอนฟิกูเรชันและแพลตฟอร์มอะไร Debug + x86 หรืออย่างอื่น?
Ondrej Tucny

ใช่ VS configuration manager ฉันเลือก debug + x86
Amzath

@DmitryShkuropatsky อัปเดตข้อความแสดงข้อผิดพลาด
Amzath

1
มันดูถูกต้อง มีโครงการอื่นในโซลูชันที่อาจทำให้เกิดข้อผิดพลาดหรือไม่
Dmitry Shkuropatsky

@DmitryShkuropatsky คุณพูดถูกมันเป็นโครงการอื่นที่มีปัญหา แต่ VS บ่นเกี่ยวกับโครงการที่กำลังรวบรวม
Amzath

คำตอบ:


214

ฉันมีข้อผิดพลาดเดียวกันแน่นอนหลังจากเพิ่มการกำหนดค่าใหม่ผ่าน ConfigurationManager ใน Visual Studio

ปรากฎว่าเมื่อมีการเพิ่มการกำหนดค่า 'การผลิต' สำหรับโซลูชันทั้งหมด (และแต่ละโครงการ) องค์ประกอบ OutputPath จะไม่ถูกเพิ่มลงในไฟล์. csproj

ในการแก้ไขฉันไปที่แท็บสร้างในคุณสมบัติโครงการเปลี่ยน OutputPath จาก\bin\Production\เป็น\bin\Production(ลบต่อท้าย\) และบันทึกการเปลี่ยนแปลง การสร้างองค์ประกอบ OutputPath แบบบังคับนี้ในไฟล์. csproj และโปรเจ็กต์ได้สร้างสำเร็จแล้ว

ฟังดูเหมือนผิดพลาดสำหรับฉัน


7
จับข้อผิดพลาดนี้ได้ดี คงไม่มีทางเดาได้ว่าการเฉือนเพียงครั้งเดียวสามารถสร้างความแตกต่างได้มากขนาดนั้น มีป้ายคำตอบที่ดี
camouflageak

8
ในกรณีของฉันการสร้างไฟล์ proj ความแตกต่างระหว่างany cpuและanycpuเป็นปัญหา แต่โพสต์ของคุณช่วยให้ฉันเห็นว่า
Joshua Drake

2
ขอบคุณโรมันที่คุณช่วยชีวิตฉันไว้ ... ถ้าฉันสามารถโหวตคำตอบของคุณได้ 100 ครั้ง! :)
Martin

2
เพิ่งพบสิ่งนี้ใน VS 2017 v15.6.6 เบคอนที่บันทึกไว้ขอบคุณ!
Angrist

1
@ Joshua Drake นี่เป็นประเด็นสำคัญเมื่อใช้ VSTS Visual studio online ใช้ 'cpu ใดก็ได้' ในขณะที่ Visual Studio ในพื้นที่ใช้ 'anycpy' สำคัญสำหรับการสร้างสคริปต์
FrankyHollywood

28

คุณสามารถเห็นข้อผิดพลาดนี้ใน VS 2008 หากคุณมีโปรเจ็กต์ในโซลูชันของคุณที่อ้างอิงแอสเซมบลีที่ไม่พบ สิ่งนี้อาจเกิดขึ้นได้หากชุดประกอบมาจากโครงการอื่นที่ไม่ใช่ส่วนหนึ่งของโซลูชันของคุณ แต่ควรจะเป็น ในกรณีนี้เพียงแค่เพิ่มโครงการที่ถูกต้องลงในโซลูชันก็จะแก้ปัญหาได้

ตรวจสอบส่วนการอ้างอิงของแต่ละโครงการในโซลูชันของคุณ หากมีข้อมูลอ้างอิงที่มีเครื่องหมาย x สีแดงอยู่ข้างๆแสดงว่าคุณพบปัญหาแล้ว โซลูชันนี้ไม่พบการอ้างอิงการประกอบนั้น

ข้อความแสดงข้อผิดพลาดค่อนข้างสับสน แต่ฉันเห็นหลายครั้งแล้ว


2
ในกรณีของฉันมันคือ "คำเตือนสีเหลือง"
AXMIM

26

หากคุณกำลังใช้ WiX ให้ดูที่นี่ (มีจุดบกพร่อง) http://www.cnblogs.com/xixifusigao/archive/2012/03/20/2407651.html

บางครั้งการกำหนดค่าการสร้างใหม่จะถูกเพิ่มลงใน.wixprojไฟล์เพิ่มเติมลงไปในไฟล์นั่นคือแยกออกจากนิยามการกำหนดค่าแบบพี่น้องโดยองค์ประกอบ XML อื่น ๆ ที่ไม่เกี่ยวข้อง

เพียงแก้ไข.wixprojไฟล์เพื่อให้<PropertyGroup>ส่วนทั้งหมดที่กำหนดคอนฟิกบิลด์ของคุณอยู่ติดกัน (หากต้องการแก้ไข.wixprojใน VS2013 ให้คลิกขวาที่โปรเจ็กต์ใน Solution Explorer ยกเลิกการโหลดโปรเจ็กต์คลิกขวาอีกครั้ง -> แก้ไข YourProject.wixproj โหลดซ้ำหลังจากแก้ไขไฟล์)


1
ขอบคุณสิ่งนี้แก้ไขให้ฉัน ฉันมีพฤติกรรมแปลก ๆ มากมายยิ่งฉันเพิ่มการกำหนดค่าลงในโครงการมากขึ้น ทันทีที่ฉันล้างไฟล์โครงการทุกอย่างทำงานได้ดี (ข้อผิดพลาดนี้ได้รับการรายงานครั้งแรกในปี 2012 หรือไม่ดี ... )
Kirschi

ขอบคุณสิ่งนี้แก้ไขให้ฉันเช่นกัน
PeterD

15

สิ่งนี้เกิดขึ้นกับฉันเพราะฉันได้ย้ายบรรทัดต่อไปนี้ใกล้กับจุดเริ่มต้นของไฟล์. csproj:

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

จำเป็นต้องวางไว้หลัง PropertyGroups ที่กำหนด Configuration | Platform ของคุณ


11

ข้อผิดพลาดที่แสดงในสตูดิโอภาพสำหรับโครงการ (สมมติว่า A) ไม่มีปัญหา เมื่อฉันมองไปที่หน้าต่างเอาต์พุตสำหรับการสร้างแบบทีละบรรทัดสำหรับแต่ละโครงการฉันเห็นว่ามีการบ่นเกี่ยวกับโครงการอื่น (B) ที่เรียกว่าแอสเซมบลีในโครงการ A โครงการ B ที่เพิ่มเข้าไปในโซลูชัน แต่ไม่ได้ถูกอ้างถึงในโครงการ A เป็นการอ้างอิงโครงการแทนที่จะเป็นการอ้างอิงการประกอบจากสถานที่อื่น ตำแหน่งนั้นประกอบด้วยแอสเซมบลีที่คอมไพล์สำหรับ Platform AnyCpu จากนั้นฉันลบการอ้างอิงการประกอบออกจากโครงการ A และเพิ่มโครงการ B เป็นข้อมูลอ้างอิง มันเริ่มรวบรวม ไม่แน่ใจว่าการแก้ไขนี้ทำงานอย่างไร


15
Deffo ลองใช้ \ p: Platform = "AnyCPU" แทน \ p: Platform = "Any CPU" นั่นได้ผลแบบฉัน! มองมานานแล้ว!
Lee Englestone

AnyCPU (ไม่มีช่องว่าง) ก็ทำงานให้ฉันเช่นกัน ขอบคุณลี
willem

1
ฉันพบข้อผิดพลาดขณะเรียกใช้กระบวนการสร้างใน TFS 2017 หลังจากที่ฉันเปลี่ยน "Path to solution หรือ package.config" จาก a .sln เป็น. vbproj การเปลี่ยน BuildPlatform เป็น AnyCPU ก็ใช้ได้ผลกับฉันเช่นกัน ดูหมายเหตุภายใต้ "Platform" ที่นี่: docs.microsoft.com/en-us/vsts/build-release/tasks/build/…
Mr.Zzyzzx

2
ในกรณีของฉันเมื่อเรียกใช้"any cpu"บิลด์จาก TFS เป็นค่าเริ่มต้นสำหรับ BuildPlatform การเปลี่ยนเพื่อ"AnyCPU"แก้ไขปัญหา
XouDo

นี่คือปี 2020 - AnyCPU กับ CPU ใด ๆ ยังคงเป็นตัวสร้างปัญหา ฉันใช้ VS2019 และยังคงได้รับสิ่งนี้ในโครงการใหม่ MS ทำไมคุณถึงลงโทษชุมชนนักพัฒนา?
Christian

9

ฉันพบข้อผิดพลาดเดียวกัน แต่ปัญหากลายเป็นเพราะฉันได้สร้างการกำหนดค่าใหม่ในโซลูชันของฉันซึ่งไม่มีอยู่ในแอสเซมบลีที่อ้างอิงจากโซลูชันอื่น

สิ่งนี้สามารถแก้ไขได้โดยการเปิดโซลูชันที่เกี่ยวข้องและเพิ่มการกำหนดค่าใหม่เข้าไปด้วย

โพสต์นี้ทำให้ฉันมีความคิดที่จะตรวจสอบชุดประกอบที่อ้างอิงหลังจากที่ฉันได้ยืนยันแล้วว่าโครงการทั้งหมดในโซลูชันของฉันมีการกำหนดค่าที่ถูกต้อง:

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


7

มีปัญหานี้เป็นผลลัพธ์จาก Azure DevOps หลังจากตั้งค่าเพื่อสร้าง. csproj แทน. sln ใน Build Pipeline

วิธีแก้ปัญหาสำหรับฉัน: แก้ไข. csproj ของโครงการที่ได้รับผลกระทบจากนั้นคัดลอกทั้งหมดของคุณ

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

โหนดวางแล้วเปลี่ยนบรรทัดแรกดังต่อไปนี้:

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

เหตุผลก็คือในกรณีของฉันข้อผิดพลาดดังกล่าว

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

เหตุใด Azure จึงต้องการใช้ "cpu ใด ๆ " แทนค่าเริ่มต้น "AnyCpu" จึงเป็นเรื่องลึกลับสำหรับฉัน แต่การแฮ็กนี้ใช้ได้ผล


จากการทำตามแนวคิดของคุณฉันพบว่าในกรณีของฉันฉันไม่จำเป็นต้องทำการเปลี่ยนแปลงในโครงการ แต่ในขั้นตอน Visual Studio Build ของฉันใน DevOps ฉันตั้งค่าฟิลด์ Confguration เพื่อใช้ตัวแปรกับค่า AnyCpu แทน
donatasj87

@ donatasj87 ช่วยโพสต์ค่าเต็มของฟิลด์นี้ได้ไหม
Jay

1
ค่าเต็มเหมือนกันทุกประการสิ่งนี้ควรใช้ในการสร้าง TFS เพียงแค่ต้องตรงกับค่าที่ตั้งไว้ในไฟล์. csproj ของคุณ คุณสามารถดูได้ในภาพนี้: pasteboard.co/JbdvBT5.png
donatasj87

4

ฉันมีข้อผิดพลาดเดียวกันดังนั้นฉันจึงตรวจสอบการตั้งค่าโครงการและในส่วน "สร้าง" คือตัวเลือก "สร้างเส้นทางเอาต์พุต" และค่าว่างเปล่า ฉันจึงกรอกค่า "bin \" ข้อผิดพลาดหายไป มันช่วยแก้ปัญหาของฉันได้


3

ฉันมี:

  1. คลิกขวาที่โครงการมีปัญหา -> ยกเลิกการโหลดโครงการ
  2. คลิกขวาที่โครงการแล้วเลือกแก้ไข * .csproj
  3. คัดลอกวางการกำหนดค่าจากการกำหนดค่าที่มีอยู่ซึ่งทำงานร่วมกับชื่อและแพลตฟอร์มการกำหนดเป้าหมายเฉพาะ (ฉันมีรุ่น | 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. คลิกขวาที่โครงการ -> โหลดโปรเจ็กต์ใหม่
  5. สร้างโครงการ / โซลูชันใหม่

3

ถ้าคุณได้รับข้อผิดพลาดนี้เฉพาะเมื่อคุณพยายามที่จะรวบรวมโครงการของคุณจาก commandline ใช้ MSBuild (เช่นในกรณีของฉัน) แล้วแก้ปัญหาคือการผ่าน outputpath ด้วยตนเองเพื่อ MSBuild /p:OutputPath=MyFolderกับข้อโต้แย้งเช่น


2

ความเป็นไปได้ที่บ้าคลั่งอีกประการหนึ่ง: หากคุณทำตามการจัดเรียงการควบคุมแหล่งที่มาอย่างง่ายในการวาง Branch \ Main, Main และ Release ไว้ข้างๆกันและคุณจะเพิ่มโครงการที่มีอยู่จาก Main แทน Branch \ Main (สมมติว่าโซลูชันการทำงานของคุณคือ Branch \ Main) คุณอาจเห็นข้อผิดพลาดนี้

วิธีแก้ปัญหานั้นง่ายมาก: อ้างอิงโครงการที่ถูกต้อง!


2

ฉันพบปัญหานี้เมื่อเพิ่มโปรเจ็กต์ลงในโซลูชันจากนั้นอ้างอิงโปรเจ็กต์จากโปรเจ็กต์อื่นในโซลูชันเดียวกัน - ได้รับไอคอนคำเตือนสีเหลืองเหนือข้อมูลอ้างอิงสังเกตว่าพา ธ ว่างเปล่า

วิธีแก้ปัญหาก็คล้ายกับที่ @Amzath แนะนำโครงการของฉันกำลังรวบรวมด้วย Target Frameworks ที่แตกต่างกันเช่น .NET 4.0 กับ 4.5


2

ในกรณีของฉันที่อยู่ที่สร้างขึ้นของแอปของฉันถูกตั้งค่าเป็นคอมพิวเตอร์เครื่องอื่นที่ถูกปิดดังนั้นฉันจึงเปิดเครื่องและรีสตาร์ท VS และแก้ไขปัญหาได้


2

อีกสาเหตุหนึ่ง: คุณเพิ่มการอ้างอิงโครงการจากโครงการ A ไปยังโครงการ B ในโซลูชัน X อย่างไรก็ตามโซลูชัน Y ที่มีโครงการ A อยู่แล้วจะใช้งานไม่ได้จนกว่าคุณจะเพิ่มโครงการ B ลงในโซลูชัน Y ด้วย


2

ฉันมีปัญหาเดียวกันหลังจากที่ฉันได้เพิ่มการกำหนดค่าใหม่และลบการกำหนดค่า "debug" และ "release" ในกรณีของฉันฉันใช้ไฟล์ cmd เพื่อเรียกใช้กระบวนการสร้างและเผยแพร่ แต่เกิดข้อผิดพลาดเดียวกัน วิธีแก้ปัญหาสำหรับฉัน: ในไฟล์ csproj ต่อไปนี้:

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

กำลังตั้งค่า Configuration เป็น "Debug" ถ้าฉันไม่ได้ระบุอย่างชัดเจน หลังจากเปลี่ยนค่าโหนดจาก "debug" เป็นการกำหนดค่าที่กำหนดเองแล้วทุกอย่างก็ทำงานได้อย่างราบรื่น หวังว่านี่จะช่วยใครก็ตามที่กำลังอ่านสิ่งนี้ :)


รายละเอียดของการแก้ปัญหานี้ระบุไว้ในโพสต์ฟอรัมนี้ social.msdn.microsoft.com/Forums/vstudio/en-US/…
Sunny Tambi

2

ฉันมีปัญหาเดียวกันเพียงแก้ไข. wixproj เพื่อให้มีไฟล์ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' ... >องค์ประกอบทั้งหมดอยู่เคียงข้างกัน

นั่นช่วยแก้ปัญหาของฉันได้


1

โปรเจ็กต์ WiX ที่ฉันใช้อยู่ได้รับการตั้งค่าในตัวจัดการการกำหนดค่าสำหรับx64ทั่วทั้งบอร์ด เมื่อสร้างโปรเจ็กต์ Custom Action สำหรับโซลูชันจะตั้งค่าเริ่มต้นทุกอย่างx86ไว้ใน.csprojไฟล์ ดังนั้นฉันจึงยกเลิกการโหลดโปรเจ็กต์แก้ไขโดยเปลี่ยนทั้งหมดx86เป็นx64บันทึกโหลดใหม่และหลังจากนั้นก็ทำได้ดี

ฉันไม่เข้าใจว่าทำไมฉันต้องทำแบบนี้ ตัวจัดการการกำหนดค่าถูกตั้งค่าให้สร้างเป็น x64 แต่จะไม่ได้รับการตั้งค่าในcsprojไฟล์ :(


0

หลังจากลองทำตามคำแนะนำอื่น ๆ ทั้งหมดที่โพสต์ไว้ที่นี่ฉันพบวิธีแก้ปัญหาสำหรับฉันคือการลบส่วนต่อไปนี้ออกจาก.csprojไฟล์:

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

เห็นได้ชัดว่าบริการนี้จากโปรเจ็กต์ดั้งเดิม (ไม่พร้อมใช้งานบนเครื่องโลคัล) ได้หยุดกระบวนการสร้างทั้งหมดแม้ว่าจะไม่จำเป็นสำหรับการคอมไพล์ก็ตาม


0

ฉันพบปัญหานี้หลังจากเพิ่มแพลตฟอร์มใหม่ในโครงการของฉัน ในกรณีของฉันไฟล์. csproj อยู่ภายใต้การควบคุมแหล่งที่มาของ Perforce และเป็นแบบอ่านอย่างเดียว ฉันตรวจสอบแล้ว แต่ VS ไม่รับการเปลี่ยนแปลงจนกว่าฉันจะรีสตาร์ท


0

ฉันมีปัญหาคล้ายกันในโครงการ Xamarin อาจเป็นกรณีที่หายาก แต่ในกรณีที่คนอื่นกำลังมีปัญหา โครงสร้างโครงการของฉันเป็นเหมือนด้านล่าง

  • xamarin โครงการ Android มีการอ้างอิงจากโครงการ xamarin.android.library
  • ฉันสร้างปลั๊กอินโดยใช้รหัสจากโครงการ android.library
  • ตอนนี้นี่คือปัญหา หากคุณเพิ่มการอ้างอิงโปรเจ็กต์หรือการติดตั้ง nuget บนโปรเจ็กต์ไลบรารี xamarin.android คุณจะได้รับข้อผิดพลาดนี้ นักพัฒนาคิดว่าโค้ดอยู่ในโครงการ Android.Library และฉันต้องอ้างอิงปลั๊กอินใหม่ในโปรเจ็กต์นี้ NO!
  • คุณต้องเพิ่มข้อมูลอ้างอิงในโครงการหลักของ Android เนื่องจากปลั๊กอิน -> ไลบรารี -> เอาต์พุตโปรเจ็กต์หลักไม่ได้ถูกสร้างขึ้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.