Когда среде Visual Studio поступает команда запустить решение, стартовый проект и все проекты, на которые имеются ссылки, компилируются в случае обнаружения любых изменений; однако проекты, ссылки на которые отсутствуют, не компилируются. Положение дел можно изменить, устанавливая зависимости проектов. Для этого щелкните правой кнопкой мыши на имени решения в окне Solution Explorer
, выберите в контекстном меню пункт Project Build Order (Порядок компиляции проектов), в открывшемся диалоговом окне перейдите на вкладку Dependencies (Зависимости) и в раскрывающемся списке Projects (Проекты) выберитеMyExtendableApp.Обратите внимание, что проект CommonSnappableTypes
CSharpSnapIn и VBSnapIn (рис. 17.4).Теперь при каждой компиляции проекта MyExtendableApp
CSharpSnapIn и VBSnapIn.Добавление событий PostBuild
Откройте окно свойств проекта для CSharpSnapIn
c-sharp-wf\code\chapterl7. Вы можете работать в другом каталоге (вероятнее всего так и есть). За счет применения макросов инструмент MSBuild всегда будет использовать корректный путь относительно файлов *.csproj.Введите в области PostBuild
(После компиляции) следующие две строки:copy $(TargetPath) $(SolutionDir)MyExtendableApp\$(OutDir)$(TargetFileName) /Y
copy $(TargetPath) $(SolutionDir)MyExtendableApp\$(TargetFileName) /Y
Сделайте то же самое для проекта VBSnapin
Когда показанные выше команды событий после компиляции добавлены, все сборки при каждой компиляции будут копироваться в каталог проекта и выходной каталог приложения MyExtendableApp
Построение сборки CommonSnappableTypes.dll
Удалите стандартный файл класса Class1.cs
CommonSnappableTypes, добавьте новый файл интерфейса по имени AppFunctionality.cs и поместите в него следующий код:namespace CommonSnappableTypes
{
public interface IAppFunctionality
{
void DoIt();
}
}
Добавьте файл класса по имени CompanyInfoAttribute.cs
using System;
namespace CommonSnappableTypes
{
[AttributeUsage(AttributeTargets.Class)]
public sealed class CompanyInfoAttribute : System.Attribute
{
public string CompanyName { get; set; }
public string CompanyUrl { get; set; }
}
}
Тип IAppFunctionality
DoIt().Тип CompanyInfoAttribute
[CompanyInfо] позволяет разработчику оснастки указывать общие сведения о месте происхождения компонента.Построение оснастки на C#
Удалите стандартный файл Class1.cs
CSharpSnapIn и добавьте новый файл по имени CSharpModule.cs. Поместите в него следующий код:using System;
using CommonSnappableTypes;
namespace CSharpSnapIn
{
[CompanyInfo(CompanyName = "FooBar", CompanyUrl = "www.FooBar.com")]