นี่คือข้อตกลง: เราต้องบอกทั้ง NuGet และ TFS ให้เพิกเฉยต่อแพคเกจเนื่องจาก NuGet พยายามทำสิ่งที่เกี่ยวข้องกับการควบคุมซอร์สที่ไม่ควรทำอย่างแน่นอน (ฟอร์มแย่, Microsoft!) ดังนั้นคุณต้องทำสองสิ่ง
ขั้นแรกให้เพิ่มไฟล์ที่มีชื่อ.tfignore
ในโฟลเดอร์โซลูชัน (สังเกตการขาดs
หลังtf
) เนื้อหาควรมีดังนี้:
\packages
ที่แจ้งให้ TFS ข้ามโฟลเดอร์แพ็คเกจของคุณ ทีนี้คุณคงคิดว่ามันจะไม่สนใจrepositories.config
ไฟล์ แต่มันจะไม่ ทำไม? ใครจะรู้หนทางของ Microsoft นั้นแปลกและลึกลับ ที่จริงแล้วฉันคิดว่ามันเป็นส่วนหนึ่งของสิ่งที่ NuGet ฉันวาดไว้ด้านล่าง แต่ถ้ามันได้รับการแก้ไขในอนาคตและคุณต้องการเก็บrepositories.config
ไฟล์ไว้แทนที่จะปล่อยให้ VS สร้างมันขึ้นมาใหม่คุณควรจะใช้สิ่งนี้:
\packages
!\packages\repositories.config
ตกลงดังนั้นตอนนี้ต้องขอบคุณ.tfignore
ไฟล์ของเราTFS กำลังเพิกเฉยแพ็กเกจของคุณ ทุกอย่างเรียบร้อยดี ผิดเนื่องจาก NuGet ล้อเล่นกับตัวควบคุมแหล่งที่มาของคุณและเพิ่มแพ็คเกจลงในการเปลี่ยนแปลงที่รอ ตอนนี้เรามาบอก NuGet เพื่อตัดมันออกไปแล้ว
สร้างโฟลเดอร์ที่เรียกว่า.nuget
ในรูทของโฟลเดอร์โซลูชันของคุณ 1ตอนนี้สร้างไฟล์ชื่อNuGet.config
และใส่ไว้ในโฟลเดอร์ใหม่นี้2 เนื้อหาควรมีลักษณะเช่นนี้:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
และตอนนี้แพ็คเกจของคุณควรอยู่ห่างจากแหล่งควบคุม เพียงจำไว้ว่าให้เพิ่มNuGet.config
และ.tfignore
ไฟล์ลงในการควบคุมแหล่งที่มาเพื่อให้พวกเขาไม่หลงทาง
แก้ไข:หากคุณมีปัญหาคุณอาจต้องการลบโฟลเดอร์แพ็คเกจตรวจสอบการเปลี่ยนแปลงนั้นแล้วทำตามขั้นตอนข้างต้น
นอกจากนี้แก้ไข:ดูเหมือนว่าจะไม่เกิดขึ้นกับ Nuget รุ่นใหม่ ดังนั้นถ้าคุณเปลี่ยนไปใช้ VS / TFS 2017 ปัญหานี้จะชัดเจนขึ้นโดยไม่ต้องกระโดดผ่านห่วงข้างต้น
1 . เพิ่มโฟลเดอร์โดยใช้ Source Control Explorer; คลิกขวาที่โซลูชั่น> เพิ่มโฟลเดอร์. -> nuget 2
เมื่อฉันค้นหาสิ่งนี้โดยใช้ VS 2013 ฉันพบว่า NuGet.config ต้องไปที่โฟลเดอร์. nuget แม้ว่าคุณจะมีไฟล์ NuGet.config อยู่ในรูทของโฟลเดอร์โซลูชันแล้ว (เพราะพูดว่า บริษัท ของคุณมีฟีด nuget ภายใน) อย่างไรก็ตามความคิดเห็นบางส่วนระบุว่าใช้งานได้ดีในรูทโซลูชันใน VS 2015 โดยส่วนตัวแล้วฉันเปลี่ยนไปใช้ TFS ในโหมด git ดังนั้นฉันจึงไม่สามารถทดสอบได้ นอกจากนี้หากคุณมีฟีดที่กำหนดเองตรวจสอบให้แน่ใจว่าคุณมีฟีดที่กำหนดเองและ nuget.org เป็นคีย์ในไฟล์ Nuget.config หรือบางครั้ง TFS จะสุ่มตัดสินใจว่าไม่สามารถเรียกคืนแพ็คเกจได้