كيف يمكنني منع Visual Studio من قفل ملفات وثائق XML في دليل BIN؟

StackOverflow https://stackoverflow.com/questions/1167608

سؤال

يتضمن حل Visual Studio تطبيق ويب وتطبيق اختبار الوحدة. يستخدم تطبيق الويب الخاص بي log4net. أريد أن أكون قادرا على استخدام MSBUILD من سطر الأوامر لبناء الحل الخاص بي. ومع ذلك، كلما قمت ببناء الحل من سطر الأوامر، أحصل على أخطاء لأنه لا يمكن نسخ log4net.xml إلى دليل BIN للمشروع.

رسالة الخطأ هي:

"غير قادر على نسخ الملف" bin log4net.xml "إلى" bin debug log4net.xml ". تم رفض الوصول إلى المسار" bin log4net.xml "."

يبدو أن Visual Studio قفل هذا الملف، لكنني لا أستطيع معرفة سبب حاجة إليه. هل هناك طريقة لمنع VS من قفل ملفات وثائق XML في مشروع قمت بتحميله؟

هل كانت مفيدة؟

المحلول

لقد تلقيت هذه المشكلة مع Visual Studio أيضا. نستخدم Nant بدلا من Msbuild، ولكن المشكلة هي نفسها. تمكنت من العمل حولها عن طريق تعديل ملف Build لتجاهل الفشل عند نسخ وثائق XML.

لاحظ أن هذا لا يحل المشكلة الأصلية بالفعل منذ أن لا تزال ملفات XML مغلقة، لكن هذا الحل البديل كان جيدا بما يكفي بالنسبة لنا لأن المحتوى الفعلي لوثوث XML لدينا لا يتغير في كثير من الأحيان.

نصائح أخرى

لقد وجدت الحل التالي: في حدث Postbuild VS أو في البرنامج النصي Nant / Msbuild تنفيذ البرنامج النصي CMD

handle.exe -p devenv [Path to the folder with locked files] > handles.txt

FOR /F "skip=5 tokens=3,4 delims=: " %%i IN (handles.txt) DO handle -p %%i -c %%j -y

يتوفر handle.exe هنا http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx.

السطر الأول من مقالب البرنامج النصي إلى Handles.txt جميع مقابض الملفات المؤمنة بواسطة السطر الثاني يقرأ معرفات مقبض من الملف ويقتل المقابض

بعد تنفيذ البرنامج النصي قد تتم إزالة الملفات / استبدالها / نقلها وغيرها

إذا كنت بخير مع حذف ملفات XML و PDB تماما من الإخراج، يمكنك تمرير /p:AllowedReferenceRelatedFileExtensions=none إلى msbuild على سطر الأوامر.

(بفضل الإجابة ذات الصلة https://stackoverflow.com/a/8757941/251011. )

تحرير: إذا كان لديك أيضا مشاكل مع ملفات DLL التي تواجه هذا الخطأ، فقد اكتشفت مؤخرا محلول متغير بيئة: https://stackoverflow.com/a/23069603/251011.

كتب كريستان:

يمكنك إسقاط هذا الملف إلى دليل آخر وإشعاره من هناك أو مكان التعليمات البرمجية التي تستخدمها في مكتبة ولها حدث إنشاء منشور على تلك النسخ عليه إلى دليل BIN الخاص به ثم المرجع.

مشكلة قفل ملف XML لدينا ليست في دليل BIN للمشاريع، بدلا من دليل مراجع خارجي. ضربناها عند أداء السلاحف> تحديث حيث تتوفر إصدار جديد. على افتراض أنه لأن VS يستخدم الملف لتحضير التحسس.

بالنسبة لأولئك الذين ضربوا هذه القضية القفل بسبب التحديثات السلاحفين ->، أقوم حاليا بتجربة هوك محدث مسبقا الذي يحذف الملف (الملفات) المساء قبل التحديث (سيتم استعادتها إذا لم يكن هناك حاجة إلى أي تحديث)، حتى الآن يبدو أن العمل (وهو غريب) لكنني لم أختبره جيدا بما يكفي ليقول بالتأكيد. سيتم تحديث هذه الإجابة إذا أثبتت موثوقية.

إليك Alling MS FILD IT في VS 2010.

أساسا لا تحقق الملفات في مجلد BIN، إنها فكرة سيئة.

يمكنك إسقاط هذا الملف إلى دليل آخر وإشعاره من هناك أو مكان التعليمات البرمجية التي تستخدمها في مكتبة ولها حدث إنشاء منشور على تلك النسخ عليه إلى دليل BIN الخاص به ثم المرجع.

سيقوم Msbuild بعد ذلك بنسخ ذلك إلى WebProjects Bin Directory لك :)

لدينا هذه المشكلة الدقيقة مع التحقق من الأشخاص في الاشياء إلى دليل BIN، ما لم يكن لديك تماما أدلة بن يجب أن لا يتم التحقق منها على الإطلاق أو لديك ملفات .Refresh في هناك لتجنب هذه الأنواع من مشكلات قفل.

متأخر بعض الشيء على الرد، آسف :)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top