Визуальные события после создания в студии - выполнение их в проекте, а не в диалоге событий - PullRequest
1 голос
/ 25 августа 2010

Итак, что я делал в последнее время, так это добавление дополнительного проекта к своим программным решениям и выполнение программ пост-сборки в нем. Этот проект создается последним, а затем запускается сам.

классная вещь, которую я могу сделать, это запустить класс автоматизации ILMerge, который я создал, чтобы автоматически выполнять слияния, если я просто предоставлю ему папку проекта, увеличу номера версий в моей информации о сборке, скопирую файлы куда угодно, и т. Д. И т. Д. И т. Д. И т. Д. Мне кажется, что возможности здесь безграничны.

пример того, с которым я сейчас работаю - у меня довольно большая библиотека фреймворков, которую я собираюсь развернуть с одним из наших приложений, но мы не хотим включать все библиотеки отдельно ( Есть как 20). Также мне не нужны все классы в библиотеке для этого приложения, поэтому имеет смысл урезать его. В проекте пост-сборки библиотеки я делаю это ...

outputDirectory = new DirectoryInfo(@"...postbuildmerges\output");
solutionDirectory = new DirectoryInfo(@"...mainSolutionDirectory");

#region Web Lib
List<string> webLibraryNames = new List<string>
{
    "Lib.Configuration",
    "Lib.Web",
    "Lib.Data",
    "Lib.Utilities",
    "Lib.Threading"
};
List<string> AllNeededAssemblies = new List<string>();
webLibraryNames.ForEach((libname) => 
    {
        foreach (string assembly in GetLibraryAssemblies(libname))
            if (AllNeededAssemblies.Exists((assemblyName) => Path.GetFileName(assemblyName) == Path.GetFileName(assembly)) == false)
                AllNeededAssemblies.Add(assembly);
    });

SharpMergeAutomator.Merge(
    @"...path to primary assembly...",
    AllNeededAssemblies.ToArray(),
    "...desired output file...",
    //merges xml documentation
    true);
#endregion

Так этот проект пост-сборки - хороший подход? это излишне сложно? Есть ли способ лучше? люди обычно делают такие вещи?

1 Ответ

2 голосов
/ 25 августа 2010

MSBuild - это язык сценариев для сборок, он дает возможность легко перебирать деревья папок, совершая действия с любым фильтром файлов, которые вам нравятся и т. Д. Вы должны делать это в сценарии MSBuild, который я бы поставил, потому что когда новый .net выходит, это, скорее всего, все еще будет язык сценариев для сборок, и вам не придется менять сценарии сборки для работы с новым .net, тогда как чем больше работы по сборке вы выполняете в таком коде, тем больше кода вы ' Придется переписывать как файлы и вещи переместились. Кроме того, с MSBuild вы получаете логирование по умолчанию вместе с множеством встроенных вещей.

Кроме того, существует множество задач сообщества, которые можно легко использовать для таких вещей, как ILMerge: http://code.google.com/p/ilmerge-tasks/wiki/HowToUse

...