คำถามติดแท็ก msbuild

Microsoft Build Engine หรือที่เรียกว่า MSBuild เป็นแพลตฟอร์มการสร้างสำหรับโค้ดที่มีการจัดการและเป็นส่วนหนึ่งของ. NET Framework

30
ประเภทผู้ให้บริการ CodeDom“ Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider” ไม่สามารถระบุตำแหน่งได้
เป็นโครงการ WebApi ที่ใช้ VS2015 ขั้นตอนในการทำซ้ำ: สร้างโครงการ WebApi ที่ว่างเปล่า เปลี่ยนเส้นทางสร้างผลลัพธ์จาก "bin \" เป็น "bin \ Debug \" วิ่ง ทุกอย่างทำงานได้อย่างสมบูรณ์จนกว่าฉันจะเปลี่ยนเส้นทางสร้างผลลัพธ์จาก "bin \" เป็น "bin \ Debug \" อันที่จริงแล้วเส้นทางออกอื่น ๆ ที่ไม่ใช่ "bin \" จะไม่ทำงาน สิ่งหนึ่งที่เพิ่มเติมเล็กน้อยคือการมีเส้นทางออกไปยังที่อื่นจะทำงานได้ตราบใดที่ฉันออกจากการสร้างใน "bin \" โปรดช่วยเสนอวิธีแก้ปัญหานี้ ฉันเดาว่าจะมีปัญหาเรื่องการใช้งานจริง

5
'เงื่อนไขที่ระบุ“ $ (PackageAsSingleFile)” ประเมินเป็น“” แทนที่จะเป็นบูลีนหรือไม่?
visual studio 2012 บนพีซีของฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้เมื่อดูตัวอย่างใน "เว็บสาธารณะ" ฉันต้องรีสตาร์ท VS เพื่อกำจัดข้อความแสดงข้อผิดพลาด การเรียกใช้บิลด์ล้มเหลวเนื่องจากข้อยกเว้น 'เงื่อนไขที่ระบุ "$ (PackageAsSingleFile)" ประเมินเป็น "" แทนที่จะเป็นบูลีน C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.targets ' เกิดข้อผิดพลาดอะไร

4
ฉันจะระบุแพลตฟอร์มสำหรับ MSBuild ได้อย่างไร
ฉันกำลังพยายามใช้ MSBuild เพื่อสร้างโซลูชันด้วยแพลตฟอร์มเป้าหมายที่ระบุ (ฉันต้องการทั้งไบนารี, x86 และ x64) นี่คือวิธีที่ฉันลอง: C:\WINDOWS\Microsoft.NET\Framework\v3.5>MsBuild SolutionPath\Solution.sln /t:Rebuild /p:Configuration=Release /p:Platform="x86" อย่างไรก็ตามการสร้างล้มเหลวเสมอหากแพลตฟอร์มนั้นแตกต่างจาก "CPU ใด ๆ " ผมทำอะไรผิดหรือเปล่า? นี่คือเอาท์พุต MSBuild ที่พิมพ์ออกมา: C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5> MsBuild SolutionPath \ Solution.sln / t: การสร้างใหม่ / p: การกำหนดค่า = Release / p: แพลตฟอร์ม = "x86" เครื่องมือสร้างรุ่น Microsoft …
155 msbuild 

18
แนวปฏิบัติที่ดีที่สุดสำหรับ“ Copy Local” และการอ้างอิงโครงการคืออะไร
ฉันมีไฟล์โซลูชัน c # ขนาดใหญ่ (ประมาณ 100 โครงการ) และฉันพยายามปรับปรุงเวลาสร้าง ฉันคิดว่า "Copy Local" เป็นเรื่องสิ้นเปลืองในหลาย ๆ กรณีสำหรับเรา แต่ฉันสงสัยเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุด ใน. sln ของเราเรามีแอปพลิเคชัน A ขึ้นอยู่กับแอสเซมบลี B ซึ่งขึ้นอยู่กับแอสเซมบลี C ในกรณีของเรามี "B" และ "C" เพียงไม่กี่อย่าง เนื่องจากสิ่งเหล่านี้รวมอยู่ใน. sln เราจึงใช้การอ้างอิงโครงการ ชุดประกอบทั้งหมดในปัจจุบันสร้างเป็น $ (SolutionDir) / Debug (หรือ Release) โดยค่าเริ่มต้น Visual Studio ทำเครื่องหมายการอ้างอิงโครงการเหล่านี้เป็น "Copy Local" ซึ่งส่งผลให้ทุก "C" ถูกคัดลอกลงใน $ (SolutionDir) / …

6
เนมสเปซ XML เริ่มต้นของโครงการจะต้องเป็นเนมสเปซ MSBuild XML
ฉันโคลนASP.NET Core SignalR Repo แบบโลคัลและลองเปิดโซลูชันจากภายในสภาพแวดล้อมต่อไปนี้ IDE Microsoft Visual Studio Enterprise 2015 Version 14.0.25431.01 Update 3 Microsoft .NET Framework Version 4.6.01055 DOT NET CLI λ dotnet --info .NET Command Line Tools (1.0.0-preview2-1-003177) Product Information: Version: 1.0.0-preview2-1-003177 Commit SHA-1 hash: a2df9c2576 Runtime Environment: OS Name: Windows OS Version: 6.1.7601 OS Platform: Windows …

15
ลบแพ็กเกจ nuget ออกจากโซลูชัน
ฉันได้เพิ่มฟีเจอร์การกู้คืนแพคเกจล่าสุดลงในโซลูชันโดยใช้ 'เปิดใช้งานการเรียกคืนแพคเกจ NuGet': http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages อย่างไรก็ตามมันสร้างเซิร์ฟเวอร์ของฉันที่เสียหายและฉันไม่มีเวลาที่จะแก้ไขดังนั้นฉันจึงต้องการลบมัน ไม่มีตัวเลือกเท่าที่ฉันรู้ดังนั้นฉันจึงลบบรรทัดต่อไปนี้ออกจากไฟล์ * .csproj ทั้งหมดของฉันด้วยตนเอง: <Import Project="$(SolutionDir)\.nuget\nuget.targets" /> ปัญหาคือตอนนี้ทุกครั้งที่ไฟล์ * .csproj ของฉันเช็คเอาท์หรือเปิดโซลูชันบรรทัดจะถูกเพิ่มอีกครั้งโดยอัตโนมัติอีกครั้งทำให้งานสร้างของฉันพังถ้าฉันบังเอิญตรวจสอบใน :( แนวคิดใดที่ฉันสามารถลบออกอย่างถาวรได้ UPDATE: แม้จะมีคำตอบด้านล่าง แต่ก็ยังคงกลับมาอีกครั้งเมื่อเปิดวิธีแก้ปัญหาใครก็ตามที่มีปัญหาเดียวกัน

7
ฉันจะเรียกใช้ msbuild จากบรรทัดคำสั่งโดยใช้ Windows SDK 7.1 ได้อย่างไร
ฉันกำลังตั้งค่าการสนับสนุน. NET 4.0 บนเซิร์ฟเวอร์ CI ของเรา ฉันได้ติดตั้ง. NET 4.0 และเครื่องมือ. NET จาก Windows 7.1 SDK แล้ว บน. NET 2.0 และ 3.5 ที่เพิ่งทำงาน ด้วย. NET 4 เมื่อฉันเรียกใช้ "พรอมต์คำสั่งของ Windows SDK 7.1" จากเมนูเริ่มก็บ่นเกี่ยวกับ The x86 compilers are not currently installed. x86-x86 Please go to Add/Remove Programs to update your installation. . Setting …
141 .net-4.0  msbuild  sdk 

21
คุณจะได้รับไดเร็กทอรีโปรเจ็กต์ปัจจุบันจากรหัส C # เมื่อสร้างงาน MSBuild แบบกำหนดเองได้อย่างไร
แทนที่จะรันโปรแกรมภายนอกด้วยพา ธ ฮาร์ดโค้ดฉันต้องการรับ Project Dir ปัจจุบัน ฉันกำลังเรียกโปรแกรมภายนอกโดยใช้กระบวนการในงานที่กำหนดเอง ฉันจะทำอย่างไร AppDomain.CurrentDomain.BaseDirectory ให้ตำแหน่งของ VS 2008 แก่ฉัน
134 c#  msbuild 

2
วิธีการหลีกเลี่ยงเครื่องหมายคำพูดใน Exec Command ใน MSBuild
ฉันกำลังพยายามสร้างสคริปต์ MSBuild ที่แมปไดรฟ์เครือข่ายกับอักษรชื่อไดรฟ์ในสคริปต์ แต่น่าเสียดายที่เส้นทางไปยังโฟลเดอร์เป้าหมายมีพื้นที่ฝังตัวอยู่ พื้นที่ฝังตัวเป็นสาเหตุให้การทำแผนที่ล้มเหลวและฉันไม่รู้ว่าเป็นไปได้ไหมที่จะหลีกเลี่ยงอัญประกาศรอบ ๆ พา ธ ฉันได้ลองใส่เครื่องหมายคำพูดคู่ แต่ MSBuild ไม่ชอบ (อย่างนั้นหรือ Windows XP ไม่ชอบ) ใครรู้วิธีเขียนรหัสสัตว์ร้ายนี้เพื่อให้แผนที่ใช้งานได้? <Exec Command="net use x: \\ofmapoly703\c$\program files\ar\iap /user:$(UserID) $(Password)" WorkingDirectory="c:\" ContinueOnError="false" /> พื้นที่ฝังตัวของหลักสูตรเกิดขึ้นใน "ไฟล์โปรแกรม"
131 msbuild 

25
การรัน MSBuild ล้มเหลวในการอ่าน SDKToolsPath
Howdy ฉันมีปัญหาเล็กน้อยในการรันสคริปต์ NAnt ที่ใช้ในการสร้างเว็บไซต์ที่ใช้. Net 2.0 ของฉันอย่างถูกต้องเมื่อรวบรวมกับ VS2008 และเป็นเครื่องมือที่เกี่ยวข้อง ฉันเพิ่งอัปเกรดไฟล์โครงการ / โซลูชันทั้งหมดเป็น VS2010 และตอนนี้บิลด์ของฉันล้มเหลวโดยมีข้อผิดพลาดต่อไปนี้: [exec] C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets (2249,9): ข้อผิดพลาด MSB3086: งานไม่พบ "sgen.exe" โดยใช้ S dkToolsPath "" หรือรีจิสทรี คีย์ "HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v7.0A" ตรวจสอบให้แน่ใจว่าได้ตั้งค่า …
130 .net  msbuild 

7
ฉันควรคอมไพล์ด้วย / MD หรือ / MT?
ใน Visual Studio มีแฟล็กคอมไพล์ / MD และ / MT ซึ่งให้คุณเลือกประเภทของไลบรารีรันไทม์ C ที่คุณต้องการ ฉันเข้าใจความแตกต่างในการใช้งาน แต่ฉันยังไม่แน่ใจว่าจะใช้อันไหนดี ข้อดี / ข้อเสียคืออะไร? ข้อดีอย่างหนึ่งของ / MD ที่ฉันเคยได้ยินมาคือสิ่งนี้ช่วยให้ผู้อื่นอัปเดตรันไทม์ได้ (เช่นอาจจะแก้ไขปัญหาด้านความปลอดภัย) และแอปของฉันจะได้รับประโยชน์จากการอัปเดตนี้ แม้ว่าสำหรับฉันแล้วสิ่งนี้ดูเหมือนจะไม่ใช่ฟีเจอร์: ฉันไม่ต้องการให้คนอื่นเปลี่ยนรันไทม์โดยไม่อนุญาตให้ฉันทดสอบกับเวอร์ชันใหม่! บางสิ่งที่ฉันอยากรู้เกี่ยวกับ: สิ่งนี้จะส่งผลต่อเวลาในการสร้างอย่างไร (น่าจะ / MT ช้ากว่านิดหน่อย?) ความหมายอื่น ๆ คืออะไร? คนส่วนใหญ่ใช้อันไหน?

20
เหตุใด MSBuild จึงดูใน C: \ for Microsoft.Cpp.Default.props แทนที่จะเป็น c: \ Program Files (x86) \ MSBuild (ข้อผิดพลาด MSB4019)
เมื่อฉันรัน msbuild เพื่อสร้างโปรเจ็กต์ vc2010 ฉันได้รับข้อผิดพลาดต่อไปนี้: error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. msbuild อยู่ c: \ Program File (x86) \ MSBuild HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ …
124 msbuild 

7
การคอมไพล์ตามเงื่อนไขและเป้าหมายเฟรมเวิร์ก
มีสถานที่เล็ก ๆ น้อย ๆ ที่โค้ดสำหรับโครงการของฉันอาจสามารถปรับปรุงได้อย่างมากหากกรอบเป้าหมายเป็นเวอร์ชันใหม่กว่า ฉันต้องการใช้ประโยชน์จากการรวบรวมแบบมีเงื่อนไขใน C # ให้ดีขึ้นเพื่อเปลี่ยนสิ่งเหล่านี้ตามต้องการ สิ่งที่ต้องการ: #if NET40 using FooXX = Foo40; #elif NET35 using FooXX = Foo35; #else NET20 using FooXX = Foo20; #endif สัญลักษณ์เหล่านี้ฟรีหรือไม่? ฉันต้องฉีดสัญลักษณ์เหล่านี้เป็นส่วนหนึ่งของการกำหนดค่าโครงการหรือไม่ ดูเหมือนง่ายพอที่จะทำเพราะฉันจะรู้ว่าเฟรมเวิร์กใดถูกกำหนดเป้าหมายจาก MSBuild /p:DefineConstants="NET40" ผู้คนรับมือกับสถานการณ์นี้อย่างไร? คุณกำลังสร้างการกำหนดค่าที่แตกต่างกันหรือไม่? คุณส่งผ่านค่าคงที่ผ่านทางบรรทัดคำสั่งหรือไม่?
124 c#  .net-3.5  msbuild  .net-4.0 

8
“ ถือว่าคำเตือนทั้งหมดเป็นข้อผิดพลาดยกเว้น…” ใน Visual Studio
ใน Visual Studio ฉันสามารถเลือกตัวเลือก "ปฏิบัติต่อคำเตือนเป็นข้อผิดพลาด" เพื่อป้องกันไม่ให้โค้ดของฉันรวบรวมหากมีคำเตือนใด ๆ ทีมของเราใช้ตัวเลือกนี้ แต่มีคำเตือนสองประการที่เราอยากจะเก็บไว้เป็นคำเตือน มีตัวเลือกในการระงับคำเตือน แต่เราต้องการให้แสดงเป็นคำเตือนเพื่อไม่ให้เกิดผล ดูเหมือนว่าวิธีเดียวที่จะได้รับพฤติกรรมที่เราต้องการคือป้อนรายการหมายเลขคำเตือน C # ทั้งหมดลงในกล่องข้อความ "คำเตือนเฉพาะ" ยกเว้นสองรายการที่เราต้องการให้ถือว่าเป็นคำเตือน นอกเหนือจากอาการปวดหัวในการบำรุงรักษาข้อเสียที่ใหญ่ที่สุดของแนวทางนี้คือคำเตือนบางอย่างไม่มีตัวเลขดังนั้นจึงไม่สามารถอ้างอิงได้อย่างชัดเจน ตัวอย่างเช่น "ไม่สามารถแก้ไขข้อมูลอ้างอิงนี้ไม่พบแอสเซมบลี" Data .... "" ไม่มีใครรู้วิธีที่ดีกว่านี้? ชี้แจงสำหรับผู้ที่ไม่เห็นทันทีว่าเหตุใดจึงมีประโยชน์ ลองนึกดูว่าคำเตือนส่วนใหญ่ทำงานอย่างไร พวกเขาบอกคุณว่ามีบางอย่างผิดปกติในโค้ดที่คุณเพิ่งเขียน ใช้เวลาประมาณ 10 วินาทีในการแก้ไขและนั่นจะช่วยให้โค้ดเบสสะอาดขึ้น คำเตือน "ล้าสมัย" แตกต่างจากนี้มาก บางครั้งการแก้ไขหมายถึงการใช้ลายเซ็นวิธีการใหม่ แต่ถ้าทั้งชั้นเรียนล้าสมัยและคุณมีการใช้งานมันกระจัดกระจายไปตามโค้ดหลายแสนบรรทัดอาจใช้เวลาแก้ไขเป็นสัปดาห์หรือมากกว่านั้น คุณไม่ต้องการให้งานสร้างเสียนานขนาดนั้น แต่คุณต้องการเห็นคำเตือนเกี่ยวกับเรื่องนี้แน่นอน นี่ไม่ใช่แค่กรณีสมมุติเท่านั้น แต่สิ่งนี้เคยเกิดขึ้นกับเรา คำเตือน "#warning" ตามตัวอักษรยังไม่ซ้ำกัน ฉันมักจะต้องการตรวจสอบ แต่ฉันไม่ต้องการทำลายงานสร้าง
124 c#  msbuild 

3
การติดตั้ง MSBuild 4.0 โดยไม่มี Visual Studio 2010
ฉันติดตั้ง. NET 4.0 และ VS 2010 RC บนแล็ปท็อปของฉันและ MSBuild ได้รับการติดตั้งโดยอัตโนมัติ ฉันหวังว่าจะสร้างเซิร์ฟเวอร์รวมแบบต่อเนื่องโดยเพียงแค่ติดตั้ง. NET SDK โดยไม่มี VS 2010 ดังนั้นฉันจึงดาวน์โหลด. NET 4.0 Framework จาก Microsoft ที่ลิงค์นี้ ขออภัยดูเหมือนว่าจะไม่ได้ติดตั้ง MSBuild ด้วยการดาวน์โหลดนี้ (หรืออย่างน้อยก็หาไม่พบ) ลิงก์นี้เป็นลิงก์ที่เหมาะสมสำหรับ SDK หรือเป็นเพียงรันไทม์ ถ้าไม่มีลิงก์สำหรับ SDK อยู่ที่ไหน ฉันสงสัยว่ามันเป็น SDK ทั้งหมดเนื่องจากมีขนาดเพียง 35MB ซึ่งการดาวน์โหลด. NET 3.5 SP1 มีขนาดเกิน 200MB

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.