التحقق من ملف خارج (TFS) لاتخاذ إجراء ما قبل المبنى

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

  •  23-08-2019
  •  | 
  •  

سؤال

لقد أضفت إجراء ما قبل المبنى لمشروع ASP.NET Control على الويب (عنصر تحكم خادم)، الذي يعمل JSMIN.EXE على مجموعة من ملفات JavaScript. تعد ملفات الإخراج هذه جزءا من شجرة التحكم المصدر ومضمنة في التجميع.

المشكلة هي عند تشغيل ما قبل المبنى، لا يمكن ل JSMIN كتابة الملف لأنه Readonly. هل من الممكن التحقق من الملف قبل اليد؟ أو أنا أجبر على تعيين سمات الملف في سطر الأوامر.

أي حل محسن للمشكلة هو موضع ترحيب.

تحديثمشكلة صغيرة واحدة مع إجابة Mehmet -y تحتاج إلى إعفاء دليل VS:

"$(DevEnvDir)tf" checkout /lock:none "$(ProjectDir)myfile" 
هل كانت مفيدة؟

المحلول

إذا كنت تستخدم خادم مؤسسة Team، فيمكنك استخدامها فائدة سطر الأوامر مؤسسة الفريق (TF.EXE) للتحقق من الملف (الملفات) أثناء الإنشاء المسبق ثم تحقق منهم مرة أخرى أثناء الإنشاء. إذا كنت تستخدم شيئا آخر للتحكم في المصدر، فيمكنك التحقق مما إذا كان لديك أداة سطر الأوامر مثل TF.EXE.

نصائح أخرى

إذا كنت لا ترغب في التحقق من الملفات كجزء من الإنشاء (والتي عادة ما تكون عادة لهذا النوع من الأشياء)، فسأقوم ببساطة بتعيين سمات ملفات .js قبل تشغيل JSMIN عليها. أسهل طريقة تعيين الملفات للقراءة غير قابلة للقراءة هي استخدام مهمة Attrib المقدمة من ملحقات مجتمع MSBUILD.. وبعد توفر نفس ملحقات المجتمع أيضا مهمة JScompress لاستدعاء JSMIN بسهولة من Msbuild.

لذلك سيكون لديك شيء مثل ما يلي (غير اختباره):

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />

<!-- rest of TFSBuild.proj file -->

<Target Name="AfterGet">    
  <Message Text="Compressing Javascript files under &quot;$(SolutionRoot)&quot;." />   
  <CreateItem Include="$(SolutionRoot)\**\*.js">
    <Output TaskParameter="Include" ItemName="JsFiles"/>
  </CreateItem>
  <Attrib Files="@(JsFiles)" ReadOnly="false"/>
  <JSCompress Files="@(JsFiles)" />
</Target>

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

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