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.