DCSIMG
Including Empty Directory While Deploying a Web Application - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

Including Empty Directory While Deploying a Web Application

 

גיל התלונן ובצדק שכשעושים Deploy ל - WebApplication זה לא מכיל את התיקיות הריקות, והוא הציע להוסיף קובץ טקסט ריק,
אני מניח שכל מי שעבד בעולם ה - web נתקל בבעייה המעצבנת הזו, ולכן החלטתי אחת ולתמיד לפתור את זה.
 
 
פוסט זה מכיל הוראות כיצד לשנות את ההגדרות של ה- publish המוגדר בסביבת העבודה, הקוד לא עבר QA מקיף ולכן השינויים הם באחריות המשתמש.
 
 
ראשית הורידו את ה - dll הזה, הוא מכיל מחלקה אחת הנראית כך:
 

public class CopyEmptyFolder : Task

{

    public string ProjectFile { get; set; }

    public string OutputFolder { get; set; }

 

    public override bool Execute()

    {

        XDocument document = XDocument.Load(ProjectFile);

        var folders = (from element in document.DescendantNodes().OfType<XElement>()

                        where element.Name.LocalName == "Folder"

                        select Path.Combine(OutputFolder, element.Attribute("Include").Value)).ToList();

 

        foreach (var item in folders)

        {

            if (!Directory.Exists(item))

                Directory.CreateDirectory(item);

        }

 

        return true;

    }

}

 
המחלקה יודעת לקבל את שם קובץ הפרוייקט
בעזרת Linq to Xml אני מוציא את כל התיקיות המוגדרות בפרוייקט,
 
ולאחר מכן אני יוצר אותם בתיקייה שנוצרת לפני ה - publish.
 
 
אחר שהורדתם מקמו אותה בנתיב הבא: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web
 
באותה תיקייה קיים קובץ בשם Microsoft.Web.Publishing.targets פתחו אותו,
בהתחלת הקובץ יש הגדרה של כל ה - targets, הוסיפו את השורה הבאה
 

<UsingTask TaskName="CopyEmptyFolder" AssemblyFile="CustomTasks.dll"/>

 
כעת חפשו task בשם CopyAllFilesToSingleFolderForPackage (אצלי יושב בשורה מספר 1944) בסוף ה task הוסיפו את השורה הבאה
 

<CopyEmptyFolder ProjectFile="$(ProjectPath)" OutputFolder="$(_PackageTempDir)"></CopyEmptyFolder>

 
 
כעת לאחר publish (ל - File System) כל התיקיות יועתקו.
פורסם: May 29 2011, 11:49 AM by Shlomo | with no comments
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 5 and 4 and type the answer here:


Enter the numbers above: