Visual Studio 2012 Web Publish ไม่ได้คัดลอกไฟล์


229

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

ถ้าฉันดูบิลด์บิวด์ฉันสามารถเห็นทุกสิ่งที่ถูกคัดลอกไปยัง obj \ Release \ Package \ PackageTmp \ อย่างถูกต้อง แต่สิ่งที่ฉันเห็นในบิลด์เอาท์คือ:

4> สร้างโครงการเสร็จแล้ว "{Project} .csproj"
4> การลบไฟล์ที่มีอยู่ ...
4> โฟลเดอร์การเผยแพร่ / ...
4> ========== Build: 3 สำเร็จแล้ว, 0 ล้มเหลว, 1 อัปเดตแล้ว, 0 ข้ามไป ===== =====
========== เผยแพร่: 1 สำเร็จ, 0 ล้มเหลว, 0 ข้ามไป ==========

แม้ว่ามันจะบอกว่าการเผยแพร่ประสบความสำเร็จไม่มีไฟล์ในไดเรกทอรีเป้าหมายสำหรับการเผยแพร่

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

มีใครเคยเห็นเหตุการณ์นี้เกิดขึ้นหรือมีความคิดในการทำให้การทำงานนี้ถูกต้องหรือไม่?

UPDATE:

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

อัปเดต 2:

ฉันโพสต์ข้อผิดพลาดบน Microsoft Connect และได้ยินกลับมาจากนักพัฒนาในทีม VS Web Developer เขากล่าวว่าพวกเขาได้แก้ไขปัญหานี้ในงานสร้างภายในและจะปล่อยการอัปเดตไปยังเครื่องมือเผยแพร่ในไม่ช้าซึ่งจะแก้ไขปัญหานี้

อัปเดต 3:

สิ่งนี้ได้รับการแก้ไขเมื่อเร็ว ๆ นี้ด้วย Visual Studio 2012 Update 2


1
ที่แปลก. หากคุณเห็นโฟลเดอร์การเผยแพร่ / ... มันควรจะทำงานได้อย่างถูกต้อง ฉันขอแนะนำให้คุณตรวจสอบกับเส้นทางของคุณ ตรวจสอบให้แน่ใจว่าคุณกำลังมองหาสถานที่ที่เหมาะสม
maxisam

14
สิ่งนี้เกิดขึ้นกับฉันใน Windows 8 พร้อม Visual Studio 2012 ตอนนี้ฉันเพิ่งสร้างโปรไฟล์การเผยแพร่ใหม่และใช้งานได้! อาจเป็นข้อผิดพลาดใน VS 2012: /
T.Ho

3
ผมมีปัญหาเหมือนกัน. การลบและสร้างโปรไฟล์การเผยแพร่ใหม่นั้นเป็นเคล็ดลับสำหรับฉัน
Tommy Jakobsen

3
การลบและสร้างโปรไฟล์ใหม่นั้นเป็นเคล็ดลับสำหรับฉัน
Michael Wells

3
สิ่งนี้ไม่ได้รับการแก้ไขใน Visual Studio Update 2 หรือใน Update 3 ตรวจสอบคำตอบที่ได้รับความนิยมมากที่สุดหลังจาก "คำตอบที่ยอมรับ" (ซึ่งไม่ใช่คำตอบ) เพียงแค่แก้ไขโพรไฟล์และ - ในแท็บ "การตั้งค่า" - เลือกการกำหนดค่าที่ถูกต้องจากรายการ (ถ้ารีลีสเป็นตัวเลือกที่ดีเลือกดีบั๊ก, บันทึกแล้วแก้ไขอีกครั้งและเลือกรีลีส) บันทึกและเผยแพร่
firepol

คำตอบ:


78

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

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

นี่คือหัวข้อที่นำฉันไปสู่คำตอบ:

connect.microsoft.com/VisualStudio/feedback/details/746321/publish-web-application-fails

คำตอบที่เกี่ยวข้องจากบทสนทนาข้างต้นที่ช่วยฉันคือ:

โพสต์โดย Microsoft เมื่อ 6/13/2012 เวลา 12.00 น. สวัสดีแอนดรู

นี่เป็นข้อผิดพลาดในวิธีที่เราจัดการกับการกำหนดค่าโซลูชันเทียบกับการกำหนดค่าโครงการ เราถือว่าไม่ถูกต้องว่าพวกเขาจะเหมือนกัน (เช่น Release's Solution | x86 จะมีการตั้งค่าแต่ละโครงการเป็น Release | x86 ด้วย) ซึ่งทำให้เราใช้คุณสมบัติบิลด์ที่ไม่ถูกต้องสำหรับการเผยแพร่ไฟล์

วิธีแก้ปัญหาคือทำให้การกำหนดค่าโซลูชันและสร้างการกำหนดค่าที่ตรงกัน ปัญหานี้จะได้รับการแก้ไขใน Visual Studio 2012 รุ่นถัดไป

ขอบคุณ - Jimmy Lewis SDET ทีมนักพัฒนาเว็บ Visual


8
ปัญหานี้เกิดขึ้นกับฉันในโครงการ Visual Studio 2012 ที่ใหม่ มันเผยแพร่ผ่าน FTP ในอดีต แต่ตอนนี้เมื่อฉันพยายามที่จะเผยแพร่มันทำตามที่กล่าวไว้ข้างต้น - มันแกล้งทำเป็นว่าบอกว่ามันประสบความสำเร็จและไม่มีอะไรผลักดันเลย มันสร้างผลลัพธ์ไปยัง obj dir แต่ไม่เคยคัดลอกไปยังเซิร์ฟเวอร์ เคล็ดลับการกำหนดค่าการเปลี่ยนแปลงไม่สามารถแก้ไขได้
Chris Moschini

12
เฮ้! มันยังพังใน SP2!

6
ฉันเพิ่งมีปัญหาเดียวกันและตระหนักว่าเป็นเพราะการตั้งค่าการเผยแพร่เริ่มต้นที่ "ใด ๆ CPU" แต่การแก้ปัญหาของฉันถูกตั้งค่าเป็น "x86" การเปลี่ยนการตั้งค่าใน Publish to x86 แก้ไขปัญหา
แซม

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

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

104

ปัญหาเดียวกัน. วิธีแก้ปัญหาเปลี่ยนการตั้งค่าการเผยแพร่จาก Release เป็น Debug เผยแพร่อีกครั้งและเปลี่ยนกลับเป็นปล่อย ...


ใช่! นี่คือคำตอบที่ดี ในกรณีของฉันฉันไม่ได้ใช้โปรไฟล์ "Release" หรือ "Debug" ที่เป็นค่าเริ่มต้น แต่เป็น "DEV", "STAGE" และ "LIVE" ฉันเห็นว่าเช่นสำหรับ STAGE บนคอมพิวเตอร์เพื่อนร่วมงานที่ดาวน์โหลดโซลูชันของฉันผ่าน TFS โปรไฟล์นั้นตั้งค่าเป็น "ปล่อย" ผิด (เหมือนกันกับโปรไฟล์อื่นทั้งหมด) ดังนั้นฉันต้องแก้ไขให้ถูกต้องแล้วชี้ไปที่ "STAGE" (หรือ DEV / LIVE สำหรับอันอื่น) การเผยแพร่ทำงาน ขอบคุณ.
firepol

ทำงานเหมือนจับใจ อันนี้ควรคำตอบที่ได้รับการยอมรับ
Aycan Yaşıt

39

ที่จะใช้เวลานี้อีกเล็กน้อย คุณมีไฟล์สองไฟล์ที่สร้างขึ้นเมื่อคุณสร้างโปรไฟล์การเผยแพร่

  • NewProfile.pubxml
  • NewProfile.pubxml.user

เมื่อคุณเปิดโครงการที่มีไฟล์เหล่านี้ในโฟลเดอร์ PublishProfile จากแหล่งควบคุมจะมีเฉพาะ.pubxmlไฟล์เท่านั้นไม่ใช่.publxml.userไฟล์ดังนั้นจึงสร้าง.publxml.userไฟล์ได้ทันทีเมื่อคุณเปิดโครงการ เมื่อสร้างใหม่.publxml.userทันที xml จะมีลักษณะดังนี้:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

เมื่อคุณสร้างโปรไฟล์ใหม่มันจะสร้าง xml ที่มีลักษณะดังนี้:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <TimeStampOfAssociatedLegacyPublishXmlFile />
    <EncryptedPassword />
  </PropertyGroup>
</Project>

หากคุณรับ<PropertyGroup>โหนดและวางไว้ใน.pubxml.userไฟล์ PublishProfiles ของคุณจะเริ่มทำงานอีกครั้ง


5
+1 สำหรับฉัน มันทำให้ง่ายขึ้นเล็กน้อยหากคุณเปิดไฟล์ทั้งสองและเปรียบเทียบหลังจากสร้างโปรไฟล์ใหม่ ฉันยังพบว่าทั้งสองไฟล์จำเป็นต้องได้รับการตรวจสอบในการควบคุมซอร์สหากทำงานในทีม
Deano

@Deano ปัญหาเกี่ยวกับการตรวจสอบในไฟล์ * .user ใด ๆ ก็คือคุณจะไม่สามารถปรับแต่งโปรเจ็กต์ของคุณ จุดของไฟล์ผู้ใช้คือการอนุญาตให้สมาชิกในทีมแต่ละคนมีการตั้งค่าท้องถิ่นของตนเอง
Dave Riedl

มีวิธีแก้ไขปัญหาอื่นแทนการเพิ่มไฟล์ ".pubxml.user" ในการควบคุมแหล่งที่มาหรือไม่?
Ubikuity

เราไม่ได้กระทำไฟล์ .user * ในการควบคุมแหล่งที่มา แต่บังเอิญเราไม่ได้ใช้รายละเอียดเผยแพร่ภายใน Visual Studio, เป็นเซิร์ฟเวอร์บูรณาการและสร้างกระบวนการอย่างต่อเนื่องของเราจัดการทุกที่ ...
เบร็ทริกบี

21

การแก้ไขที่ง่ายคือการลบโปรไฟล์เผยแพร่ของคุณและสร้างโปรไฟล์ใหม่

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

สิ่งนี้จะแก้ไข

ฉันมีปัญหานี้จากการเปลี่ยนจาก 2010 เป็น 2012


สิ่งนี้ใช้ได้ผลสำหรับฉันสิ่งที่ฉันทำคือลบโปรไฟล์ในเครื่องท้องถิ่นและสร้างใหม่ สิ่งนี้ไม่ส่งผลกระทบต่อเครื่องจักรอื่น ๆ ในการพัฒนา
Jean Jimenez

ฉันมีปัญหาในการสลับโครงการจาก vs2013 เป็น vs2012 และนี่เป็นการแก้ไขปัญหาอย่างสมบูรณ์
NikiUsefi

สิ่งนี้ใช้ได้สำหรับฉัน ฉันใช้ขั้นตอนเหล่านี้เพื่อสร้างโปรไฟล์ใหม่ (ระบบไฟล์) ของฉันเผยแพร่โปรไฟล์: stackoverflow.com/a/20616521/381082
DeveloperDan

9

ฉันมีข้อผิดพลาดเดียวกันและฉันเปลี่ยนการตั้งค่าจากรีลีสเป็นดีบั๊กและแก้ปัญหาได้ ..


8

ฉันมีปัญหาเดียวกันนี้ แต่ไม่มีคำตอบในหัวข้อนี้ที่เหมาะกับฉัน ปัญหาของฉันคือมีไดเรกทอรีที่มีไฟล์ HTML แบบคงที่ (โดยแอพของฉัน) ที่สร้างขึ้นแบบไดนามิก ไดเรกทอรีทั้งหมดไม่ถูกเผยแพร่

วิธีแก้ปัญหาสำหรับฉันพบได้ที่นี่ :

ปัญหาหนึ่งที่ฉันกลับมาอีกครั้งและคิดว่าฉันควรเอกสารว่าไฟล์บางประเภทไม่ได้ถูกอัปโหลดเมื่อฉันเผยแพร่โครงการ

ประเภทไฟล์ที่เป็นปัญหาคือไฟล์. pdf และ. rtf

เหตุผลนี้เกิดขึ้นเนื่องจากนามสกุลไฟล์เหล่านี้ไม่ได้รับการยอมรับว่าต้องการการเผยแพร่โดย Visual Studio โชคดีที่สิ่งนี้สามารถเปลี่ยนแปลงได้ใน Visual Studio

เลือกไฟล์ที่ไม่ได้คัดลอก ในคุณสมบัติให้มั่นใจว่าการสร้างการดำเนินถูกตั้งค่าให้เนื้อหา

หากวิธีนี้ใช้ไม่ได้สามารถลองต่อไปนี้ได้

ภายใต้เมนูโครงการเลือกแพ็คเกจ / เผยแพร่เว็บและสังเกตเห็นว่าดรอปดาวน์นี้:

ป้อนคำอธิบายรูปภาพที่นี่

ลองเปลี่ยนเป็นไฟล์ทั้งหมดในโฟลเดอร์โครงการนี้


สิ่งนี้ใช้ได้กับสถานการณ์ของฉัน - เมื่อไฟล์บางไฟล์เท่านั้นที่เผยแพร่
AndrewRalon

ใช้งานได้เพียงเพราะไฟล์ไม่ได้รวมอยู่ในโครงการอย่างถูกต้อง ดูคำตอบด้านล่างนี้สำหรับสาเหตุและวิธีแก้ปัญหา: stackoverflow.com/a/40721544/3520070
AndrewRalon

คำตอบแบบใดที่คุณหมายถึง?
Tomas Kubes

7

นี่เป็นเพราะ. pubxml.user มีข้อมูลที่จำเป็นในการเผยแพร่และไฟล์นั้นไม่ได้ (และไม่ควร) รวมอยู่ในการควบคุมแหล่งที่มา ในการแก้ไขข้อบกพร่อง VS นี้ให้คัดลอกข้อมูลจากไฟล์. pubxml.user ไปยังไฟล์. pubxml คุณสมบัติที่เกี่ยวข้องคือ:

<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>

ใส่สิ่งเหล่านั้นลงใน. pubxml ของคุณและคุณน่าจะไปได้ดี


7

ฉันลองใช้วิธีแก้ปัญหาทั้งหมด แต่นี่เป็นวิธีที่ใช้ได้ทุกครั้ง

เราเพียงแค่เปลี่ยน "วิธีการเผยแพร่:" จาก "ระบบไฟล์" เป็น "Web Deploy" และเปลี่ยนกลับเป็น "File System" ทันที


ใช่นี่คือสิ่งที่ใช้งานได้ในที่สุดสำหรับฉันเช่นกัน (ลองทำตามคำแนะนำอื่นทั้งหมดด้านบน) นี่คือ vs2010
กะเหรี่ยง

5

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

วิธีแก้ปัญหาที่กล่าวถึงโดย OP เพื่อเปลี่ยนปัญหาการสร้างไปมาดูเหมือนว่าเป็นทางออกเดียวที่เชื่อถือได้ในเวลานี้


วิธีแก้ปัญหาแบบเดียวกันก็เป็นสิ่งเดียวสำหรับฉันเช่นกัน ในการชี้แจงขั้นตอน: สร้าง> เผยแพร่ เลือกแท็บการตั้งค่าทางด้านซ้าย เปลี่ยนการกำหนดค่าการสร้างเป็นสิ่งอื่น คุณจะเห็นว่าตอนนี้มีเครื่องหมายดอกจัน (*) ติดกับชื่อโปรไฟล์การเผยแพร่ - นั่นเป็นสัญญาณว่าบั๊กถูกขัดขวาง เปลี่ยนการกำหนดค่าการสร้างกลับไปเป็นสิ่งที่คุณต้องการ ดำเนินการต่อด้วยการเผยแพร่ตามปกติ แก้ไขแล้ว.
Chris Moschini

4

ฉันพบปัญหาเดียวกันใน VS 2010 หลังจากตรวจสอบการเผยแพร่ผลลัพธ์บันทึกเหตุการณ์เปิดใช้งานและตรวจสอบบันทึกภาพในสตูดิโอ ฯลฯ ฉันจึงตัดสินใจลบเว็บที่เผยแพร่ (ผ่านการเพิ่ม / ลบ) ซึ่งฉันเชื่อว่าเพิ่งอัปเดตเป็น v1 0.30810.0 วิธีนี้แก้ไขปัญหาได้


2
เรามีปัญหานี้ดูเหมือนว่าจะเกี่ยวข้องกับไฟล์ pubxml.user ในโฟลเดอร์ PublishProfiles ภายใต้โครงการของฉัน - เหมืองมีรายการไฟล์ที่เครื่องสร้างขึ้นเพื่อเผยแพร่แม้ว่าเอกสารระบุว่าไฟล์นี้มีไว้สำหรับการตั้งค่าเฉพาะสำหรับฉันเท่านั้น ( ดังนั้นจึงไม่ได้อยู่ในการควบคุมของแหล่งที่มา) ฉันสามารถเผยแพร่ได้ เพื่อนร่วมงานของฉันใช้สำเนาซอร์สโค้ดของเราใหม่และไม่สามารถเผยแพร่ได้เมื่อไฟล์ pubxml.user ของเขาถูกสร้างขึ้นไม่มีไฟล์ใด ๆ เราได้ถอนการติดตั้งเว็บที่อัปเดตแล้วและทั้งหมดกลับมาดีอีกครั้ง
Nick

4

ที่นี่เรามีปัญหาเดียวกัน

เราเพียงแค่เปลี่ยน "วิธีการเผยแพร่:" จาก "ระบบไฟล์" เป็น "Web Deploy" และเปลี่ยนกลับเป็น "File System" ทันที


นี่ควรจะอยู่ด้านบน
JoeBrockhaus

ตอนนี้ได้รับการแก้ไขแล้วด้วย Visual Studio 2012 Update 3
KoalaBear

4

การทำงานต่อไปนี้สำหรับฉัน:

เพียงเปลี่ยนจาก Release> Debug> Release (หรือกลับกัน) แล้วเผยแพร่

ไม่จำเป็นต้องลบลบแก้ไขเผยแพร่สิ่งที่คุณไม่ต้องการ


4

ปัญหาของฉันอยู่ในการกำหนดค่าที่ไม่ถูกต้องของไฟล์ myproject.csproj ไฟล์ '_address-step1-hidden.cshtml' ไม่ได้คัดลอกในการเผยแพร่ 'ไม่มี' เปลี่ยนเป็น 'เนื้อหา' ตอนนี้ก็ไม่เป็นไร ป้อนคำอธิบายรูปภาพที่นี่


นั่นมัน! โปรเจ็กต์มีไฟล์จำนวนมากที่ถูกตรวจสอบลงในคอนโทรลแหล่งที่มา แต่ถูกทำเครื่องหมายเป็นNoneในไฟล์. csproj หรือหายไปจากโปรเจ็กต์โดยสมบูรณ์ (มี แต่ไม่ "ใช้")! สิ่งนี้อธิบายได้อย่างสมบูรณ์ว่าเหตุใดการเรียกใช้ในพื้นที่ทำงานได้ตลอดเวลา แต่การเผยแพร่ไม่เคยทำ : D
AndrewRalon

3

ปัญหาเดียวกันกับ VS 2012 Pro ที่มีดิสก์เผยแพร่เป้าหมาย โครงการใช้ในการเผยแพร่อย่างถูกต้อง แต่เริ่มทำปัญหานี้เมื่อไม่สามารถคัดลอกไฟล์ไปยังโฟลเดอร์ปลายทาง

วิธีแก้ไขคือการแก้ไขโพรไฟล์เผยแพร่เปลี่ยนโหมดจาก Release (CPU ใด ๆ ) เพื่อดีบักจากนั้นกลับไปที่ Release (CPU ใด ๆ ) การทำเช่นนี้จะทำให้ไฟล์ PublishProfiles \ projname.pubxml.user ถูกเขียนใหม่ (ดังอธิบายข้างต้น) ดูเหมือนว่าจะเพิ่มองค์ประกอบ LastUsedBuild, LastUsedPlatform และ TimeStampOfAssociatedLegacyPublishXmlFile ภายใต้โหนดกลุ่มคุณสมบัติ หลังจากการเผยแพร่เสร็จสิ้นจะเป็นการเพิ่มกลุ่มโฆษณาอีกกลุ่มที่มีแต่ละไฟล์และเผยแพร่ครั้ง


1

การกระทำนี้ประสบความสำเร็จสำหรับฉัน:

ฆ่าเผยแพร่โปรไฟล์ใน "คุณสมบัติ> PublishProfiles> xxxx.pubxml" และตั้งค่าอีกครั้ง


1

สำหรับสิ่งที่คุ้มค่าในที่สุดฉันก็ยอมแพ้ในการต่อสู้กับ Web Deploy เพื่อทำสิ่งที่ฉันต้องการ (คัดลอกไฟล์ที่ปรับใช้ได้และไม่มีอะไรอื่น) ดังนั้นฉันจึงเขียนสคริปต์ใน PowerShell และมีความสุขกับผลลัพธ์จริงๆ มันมากเร็วกว่าสิ่งที่ฉันพยายามผ่าน MSBuild / Web ประกาศคงเพราะวิธีการเหล่านั้นก็ยังคงทำสิ่งที่ฉันไม่จำเป็นต้อง

นี่คือส่วนสำคัญ ( ตัวอักษร ):

function copy-deployable-web-files($proj_path, $deploy_dir) {
  # copy files where Build Action = "Content" 
  $proj_dir = split-path -parent $proj_path
  [xml]$xml = get-content $proj_path
  $xml.Project.ItemGroup | % { $_.Content } | % { $_.Include } | ? { $_ } | % {
    $from = "$proj_dir\$_"
    $to = split-path -parent "$deploy_dir\$_"
    if (!(test-path $to)) { md $to }
    cp $from $to
  }

  # copy everything in bin
  cp "$proj_dir\bin" $deploy_dir -recurse
}

ในกรณีของฉันฉันกำลังเรียกสิ่งนี้ในสภาพแวดล้อม CI (TeamCity) แต่มันอาจจะติดอยู่ในเหตุการณ์หลังสร้างได้อย่างง่ายดาย


1

ฉันพบว่าฉันสามารถแก้ไขปัญหานี้ได้ด้วยการเปลี่ยนตำแหน่งเป้าหมายจาก obj / [release | stage | .. ] เป็นเส้นทางใหม่นอกโฟลเดอร์โซลูชันอย่างสมบูรณ์เช่น c: \ deployment ดูเหมือนว่า VS 2012 กำลังสับสนและอาจยอมแพ้ในระหว่างกระบวนการเผยแพร่

ด้าน


1

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

  • เลือกการกำหนดค่าบางอย่างในแถบเครื่องมือ VS เช่น Release และ CPU ใด ๆ เรียกใช้โครงการ
  • หลังจากนั้นคลิกขวาใน Solution Explorer บนโซลูชันที่เป็นปัญหาเลือกเผยแพร่ สร้างโปรไฟล์การเผยแพร่ใหม่หรือใช้โปรไฟล์ที่กำหนด แต่ต้องแน่ใจว่าเลือกการกำหนดค่าเดียวกัน (เช่น Release และ CPU ใด ๆ ) เสมอเหมือนก่อนที่คุณจะรันโครงการในครั้งสุดท้าย
  • นอกจากนี้ในกรณีของฉันจำเป็นต้องลบโฟลเดอร์OBJเพราะนี่คือการตั้งค่าจากการพยายามเผยแพร่ที่ไม่สำเร็จครั้งล่าสุดของฉันติดแม้ว่าฉันจะรีสตาร์ท VS และลบโปรไฟล์การเผยแพร่ทั้งหมด

0

ฉันมีเว็บแอปพลิเคชันที่มีโครงการอ้างอิงหลายแห่งในโซลูชัน ฉันปรับใช้เรียบร้อยแล้วด้วยการกำหนดค่าเผยแพร่ครั้งเดียวหลายครั้งในอดีต ฉันเปลี่ยนการกำหนดค่าโครงการจาก Debug เป็น Release สำหรับโครงการที่พลาดไปในอดีต ครั้งต่อไปที่ฉันพยายามปรับใช้ฉันมีอาการเหล่านี้โดยที่ Publish เพิ่งจะล้มเหลวอย่างเงียบ ๆ - มันไม่ทำอะไรเลยและบอกว่าทำได้สำเร็จ:

1>------ Build started: Project: Project, Configuration: DeployProduction Any CPU ------
1>  
2>Publishing folder /...
========== Build: 1 succeeded, 0 failed, 9 up-to-date, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========

วิธีเดียวในการกู้คืนคือการล้างโปรไฟล์ Publish ปิด Visual Studio เพื่อบังคับให้บันทึกการลบเปิดใหม่และสร้างโปรไฟล์ Publish ใหม่อีกครั้งจากศูนย์ เมื่อฉันทำอย่างนั้นฉันก็สามารถเผยแพร่ได้อีกครั้ง

Win8 VS2012 แล็ปท็อปเส็งเคร็ง


0

ใน Visual Studio 2012 การสลับระหว่างการเผยแพร่ยังคงเป็นสาเหตุของปัญหา

เราได้เพิ่มเหตุการณ์ก่อนสร้างเพื่อลบobjโฟลเดอร์: del /s /f /q $(ProjectDir)\objและมันแก้ไขปัญหาการเผยแพร่ การทำความสะอาดบางครั้งทำงานได้ แต่ไม่เสมอไป


0

ในที่สุดฉันก็พบคำตอบด้วยตัวเอง โซลูชันทั้งหมดข้างต้นไม่ได้ผลสำหรับฉัน

สิ่งที่ฉันได้ทำคือฉันย้ายโครงการไปยังไดรฟ์ c เปลี่ยนโฟลเดอร์โครงการเป็นสิ่งที่สั้นและบูมมันเผยแพร่ ..

เหตุผลที่ล้มเหลวในด้านของฉันคือฉันมีชื่อโครงการที่ยาวนานมาก

C: \ Users \ user \ Desktop \ Compliance Management System \ ComplianceIssueManagementSystem \ ComplianceIssueManagementSystem

ฉันเคยคิดเรื่องนี้เพราะบางครั้งเมื่อฉันแยกไฟล์ rar มันบอกว่าชื่อ / พา ธ ยาวเกินไป ฉันคิดว่ามันจะเหมือนกับ Visual Studio 2012 ที่เผยแพร่ และมันก็เป็นเช่นนั้น!

หวังว่ามันจะช่วยพวกคุณ


0

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

CodeFile = "Consolidated.aspx.vb" สืบทอด = "รวม


0

วิธีการแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉัน

แต่ฉันสังเกตเห็นว่าโครงการ ASP.NET MVC ห้าโครงการของเราในโซลูชันหลักของเราโครงการสี่รายการวางแพ็คเกจการปรับใช้ในตำแหน่งที่ถูกต้องขณะที่โครงการหนึ่งวางไว้ภายใต้ obj \ Debug

ฉันเปรียบเทียบโครงการและพบความคลาดเคลื่อน ทางออกคือการเปลี่ยนแปลงสิ่งนี้ :

<Import
    Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

ถึงสิ่งนี้ :

<Import
  Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets"
  Condition="'$(VSToolsPath)' != ''" />
<Import
  Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets"
  Condition="false" />

หลังจากที่ฉันทำการเปลี่ยนแปลงทั้งห้าโครงการวางแพ็คเกจการใช้งานของพวกเขาในจุดที่เหมาะสม

(ขออภัยเกี่ยวกับเส้นยาว แต่ฉันไม่สามารถหาวิธีที่ดีกว่าที่จะกลั่นแกล้งพวกเขา)


ฉันประสบสถานการณ์ที่ไฟล์หนึ่งหรือสองดูเหมือนว่าถูกมองข้ามและไม่ได้เผยแพร่ไปยังเซิร์ฟเวอร์ แต่ไฟล์. vbproj ของฉันมีอิลิเมนต์ <Import> ทั้งสองที่คุณแนะนำ
bkwdesign

0

ฉันพบสิ่งนี้ด้วย Visual Studio ที่สร้างไฟล์อ้างอิงบริการยาวเกินไปในแง่ของความยาวพา ธ โดยรวม

ทำให้สั้นลงโดยการสร้าง Service Reference ขึ้นอีกครั้งโดยใช้ svcutil.exe ลบไฟล์อ้างอิงการบริการดั้งเดิมทั้งหมด

svcutil สามารถถูกเรียกเช่นนี้:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe" /language:CS http://myservice /namespace:*,My.Namespace

My.Namespace ควรถูกแทนที่ด้วยเนมสเปซที่มีอยู่ในพร็อกซีบริการที่สร้างขึ้น (โดยทั่วไปจะอยู่ในไฟล์ Reference.cs) เพื่อหลีกเลี่ยงข้อผิดพลาดในการรวบรวม

http://myservice ควรแทนที่ด้วย url ปลายทางของบริการ


0

ฉันมีปัญหาเดียวกัน วิธีการแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉัน

ดังนั้นฉันจึงยกเว้นไฟล์ที่ไม่สามารถคัดลอกได้ในขณะเผยแพร่


0

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

บนวิธีแก้ปัญหาของฉันฉันพบวิธีแก้ปัญหา

  1. วิซาร์ดการเผยแพร่จะแสดงข้อผิดพลาดใด ๆ ในขณะเผยแพร่ แต่จะไม่คัดลอกไฟล์ใด ๆ ไปยังโฟลเดอร์ปลายทาง

  2. หากต้องการค้นหาไฟล์ที่สร้างข้อผิดพลาดเพียงคัดลอกเนื้อหาโฟลเดอร์เว็บไซต์ไปยังโฟลเดอร์ใหม่และเริ่มสตูดิโอภาพด้วยเว็บไซต์นั้น

  3. ตอนนี้เมื่อคุณพยายามที่จะเผยแพร่มันจะให้ชื่อไฟล์ที่มีข้อผิดพลาด

  4. เพียงแก้ไขข้อผิดพลาดในโฟลเดอร์เว็บไซต์ดั้งเดิมและลองเผยแพร่มันจะทำงานเหมือนเดิม


0

ทำตามขั้นตอนเหล่านี้เพื่อแก้ไข:

Build > Publish > Profile > New

สร้างโปรไฟล์ใหม่และกำหนดค่าด้วยการตั้งค่าเดียวกับโปรไฟล์ที่มีอยู่ของคุณ

โครงการจะเผยแพร่อย่างถูกต้องในขณะนี้ สิ่งนี้มักจะเกิดขึ้นเนื่องจากโพรไฟล์เผยแพร่ที่ควบคุมโดยแหล่งที่มาจากเครื่องอื่นที่สร้างขึ้นใน Visual Studio รุ่นที่ใหม่กว่า


0

คงที่ - โซลูชันต่าง ๆ ที่นำเสนอไม่ได้ผลสำหรับฉัน สิ่งที่ใช้ได้ผลกับฉันกับVS Community 2017 Windows Server 2012 R2คือการเปลี่ยนตัวแปรสภาพแวดล้อม TEMP และ TMP สำหรับผู้ใช้จากนั้นรีสตาร์ทระบบและปรับใช้อีกครั้ง (การรีสตาร์ท VS ไม่เพียงพอ) ตัวแปร temp เหล่านี้คือตำแหน่งที่ VS ทำการ temp เผยแพร่

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

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


-1

ครั้งแรก:

  • สร้างในการกำหนดค่าการเปิดตัว
  • ในคุณสมบัติของโครงการ -> หน้าเลือกไฟล์และโฟลเดอร์ทั้งหมดภายใต้แพ็คเกจ / เผยแพร่เว็บ
  • สร้างโซลูชันใหม่ (หลังจากคลีนโซลูชัน)
  • ตอนนี้เผยแพร่

ในขณะที่เผยแพร่ตรวจสอบอีกครั้งว่าคุณได้เลือกอะไร
สิ่งนี้ควรทำ มันทำเพื่อฉัน! :)


-2

วิธีที่ง่ายที่สุดคือ

   1. select the file(s) that are not being copied,
   2. Press <F4> to get the properties window
   3. Make the "Build Action" property "compile" or "content" depending on what it is.
   4. Now this particular file will be included!
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.