משיב מוביל
Publish לאפליקציית Clickonce לאחר Build בשרת ה- TFS

שאלה
-
שבוע טוב.
יש לי שאלה שאשמח לקבל מהקהילה תשובה אליה, או הפניה לפתרון ממקור אחר.
יש לי מספר פרויקטים (.exe) שאני עושה להם Build דרך ה-TFS.
אני רוצה שפרויקט אחד מהם יבצע התקנת ClickOnce אוטומטית, רק אם הוא רץ מ- Build Definition מסוים (וכמובן שגם לא יעשה התקנה מכל Build רגיל שאני עושה דרך הvisual-Studio).
קודם כל אשמח לשמוע הצעות לביצוע. אני משתמש בTFS 11.0.50727.1
גם דרך שימוש בסקריפט Power-Shell שירות אוטומטית בסיום ה- Build Definition בשרת יתקבל בברכה.
דרך הניסיון שלי הייתה להוסיף לפרויקט משתנה
<Target Name="AfterBuild" Condition=" '$(ShobPublish)' == '1' ">
<MSBuild
Projects="..\SW101\SW101.csproj"
Targets="Publish;Build"
Properties="PublishDir=C:\ClickOnce\"/>
</Target>
* '$(ShobPublish)' הוא משתנה שאני יצרתי.
* והוספתי רק לBuild Definition המסוים תחת MSbuild Arguments הערך /p:ShobPublish=1
ועכשיו הבעיה:
אם הTarget Name="AfterBuild" הוא ללא תנאי, אכן התקנת ClickOnce מתבצעת.
אם הTarget Name="AfterBuild" הוא עם התנאי, אכן Build דרך ה-visual-Studio לא יוצר התקנה, אבל שאני שולח הפרמטר ShobPublish=1 דרך ה- MS-Build אני מקבל הודעת שגיאה:
There is a circular dependency in the target dependency graph involving target "AfterBuild"
ניסיתי שפרויקט אחר שרץ הTFS יריץ Publish לפרויקט SW101 אבל גם אז אני מקבל השגיאה, מכיוון ו- SW101 שאני מתקין צריך לקבל ירושה ממנו (וגם מהרבה פרויקטים אחרים).
האם יש הצעות???
בתודה מראש,
-עודד
תשובות
-
שלום.
מצטער שלא עדכנתי קודם לכן, היה לי פרויקט מקביל שהייתי עסוק בו.
הלינק אכן נתן לי כיוונים חדשים, בסופו של דבר הפתרון היה מאוד פשוט לבעיית התלויות.
שניתי את הפרויקט שלי מ-
Targets="Publish;Build
ל-
Targets="PublishOnly
כך שהוא לא מבצע BUILD פעמיים ורק לאחר שהפרויקט התקמפל הוא מבצע PUBLISH ב- After Build.
עכשיו יש לי בעיה חדשה אבל אני יודע כיצד לפתורה:
הBUILD בשרת נכשל במהלך הPUBLISH אך זאת מכיוון ולשרת הTFS שלנו לא מותקן SDK ל .NET FrameWork
אני מצפה שלאחר התקנתו הPUBLISH יצליח.
(כרגע הוא לא מוצר את Setup.Bin)
תודה לכולם
- נערך על-ידי Oded Sneh יום שני 02 יוני 2014 12:39
- סומן כתשובה על-ידי Dan MorgensternModerator יום שני 02 יוני 2014 17:47
כל התגובות
-
הייתי מנסה כיוון אחר
במקום פרמטרים/משתנים - למה לא ללכת על קונפיגורציה נוספת ל- solution?
בנוסף ל- debug/release תוסיף קונפיגורציית click once שבקונפיגורציה הנ"ל יש סקריפט שירוץ ב- post buildזה לא ישפיע על קומפילציות מקומיות בסטודיו ולא על בילדים אחרים - צריך ב- build definition לבחור את הקונפיגורציה הנ"ל.
דן
-
-
אז בוא נשאר בכיוון הראשון וננסה לטפל בבעית התלויות
בדוק את זה
http://social.msdn.microsoft.com/Forums/vstudio/en-US/3ba7b321-71f8-4176-a1b5-53be33f0622a/error-msb4006-there-is-a-circular-dependency-in-the-target-dependency-graph-involving-target?forum=msbuild
דן
- הוצע כתשובה על-ידי Dan MorgensternModerator יום ראשון 01 יוני 2014 16:17
- סומן כתשובה על-ידי Dan MorgensternModerator יום שני 02 יוני 2014 12:22
- סימון כתשובה בוטל על-ידי Dan MorgensternModerator יום שני 02 יוני 2014 17:47
-
-
שלום.
מצטער שלא עדכנתי קודם לכן, היה לי פרויקט מקביל שהייתי עסוק בו.
הלינק אכן נתן לי כיוונים חדשים, בסופו של דבר הפתרון היה מאוד פשוט לבעיית התלויות.
שניתי את הפרויקט שלי מ-
Targets="Publish;Build
ל-
Targets="PublishOnly
כך שהוא לא מבצע BUILD פעמיים ורק לאחר שהפרויקט התקמפל הוא מבצע PUBLISH ב- After Build.
עכשיו יש לי בעיה חדשה אבל אני יודע כיצד לפתורה:
הBUILD בשרת נכשל במהלך הPUBLISH אך זאת מכיוון ולשרת הTFS שלנו לא מותקן SDK ל .NET FrameWork
אני מצפה שלאחר התקנתו הPUBLISH יצליח.
(כרגע הוא לא מוצר את Setup.Bin)
תודה לכולם
- נערך על-ידי Oded Sneh יום שני 02 יוני 2014 12:39
- סומן כתשובה על-ידי Dan MorgensternModerator יום שני 02 יוני 2014 17:47