В C# при добавлении файла в проект он копируется в папку проекта, таким образом создается копия исходного файла.В то же время в C++ и Delphi в проект добавляется ссылка на исходный файл и нового экземпляра не создается.
Как можно добиться того же эффекта в C#?
P.S. При программировании C++ и Delphi мы использовали общую для нескольких проектов библиотеку написанных нами классов, которая хранилась отдельно от проектов и дополнялась и изменялась по мере выполнения проектов, изменения в этой библиотеке вносились прямо из разрабатываемых проектов и распространялись на все проекты.
22.01.10 19:46: Перенесено модератором из '.NET' — AndrewVK
Здравствуйте, Ankir, Вы писали:
A>В C# при добавлении файла в проект он копируется в папку проекта, таким образом создается копия исходного файла.В то же время в C++ и Delphi в проект добавляется ссылка на исходный файл и нового экземпляра не создается. A>Как можно добиться того же эффекта в C#?
В MS VisualStudio такого эффекта можно добиться если повнимательнее рассмотреть кнопку Add в диалоге "Add Existing Item" и нажать не на кнопку, а на стрелочку сбоку кнопки (там будет пункт Add as link).
Здравствуйте, Ankir, Вы писали:
A>В C# при добавлении файла в проект он копируется в папку проекта, таким образом создается копия исходного файла. В то же время в C++ и Delphi в проект добавляется ссылка на исходный файл и нового экземпляра не создается. A>Как можно добиться того же эффекта в C#?
Правый клик по проекту в solution explorer'е, «Add > Existing item...», указать требуемый файл и нажать не Add, а ▼, в меню выбрать «Add As Link».
Здравствуйте, Ankir, Вы писали:
A>В C# при добавлении файла в проект он копируется в папку проекта, таким образом создается копия исходного файла.В то же время в C++ и Delphi в проект добавляется ссылка на исходный файл и нового экземпляра не создается. A>Как можно добиться того же эффекта в C#?
Такого эффекта можно добиться выбрав "Add as Link" при добавлении файла в проект.
Но если это тебе надо для того, что ниже описано, то ты выбрал неправильный путь.
A>P.S. При программировании C++ и Delphi мы использовали общую для нескольких проектов библиотеку написанных нами классов, которая хранилась отдельно от проектов и дополнялась и изменялась по мере выполнения проектов, изменения в этой библиотеке вносились прямо из разрабатываемых проектов и распространялись на все проекты.
Для того, что бы решить эту задачу, надо сделать отдельную Class Library, включить в неё библиотчные классы и подключать ее в Project References тех проектов, которые их используют.
Здравствуйте, Ankir, Вы писали: A>Как можно добиться того же эффекта в C#?
Общую часть вынести в отдельный солюшн. Делать сборку, ссылаться на нее из других проектов (чтобы не класть в GAC, можно заюзать DEVPATH).
Здравствуйте, Mr.Cat, Вы писали:
MC>Общую часть вынести в отдельный солюшн. Делать сборку, ссылаться на нее из других проектов (чтобы не класть в GAC, можно заюзать DEVPATH).
Доступность сборки из вкладки «.NET» окна «Add reference» никак не зависит от нахождения сборки в GAC'е. На это влияет нахождение пути к сборкам в определённой ветке реестра (или симлинков в определённой папке).
Можно также добавить путь к сборке в Project References, эта информация хранится не в файле *.csproj, а в файле *.user (который обычно не хранится в репозитории), так что конфликтов с локальными путями других разработчиков не будет. Из недостатков такого подхода: это нужно делать отдельно для каждого проекта, использующего сборку; усложняется deployment исходников (те мероприятия, которые нужно произвести на «голой» машине после чекаута, чтобы проект собрался).
Здравствуйте, Ankir, Вы писали:
A>P.S. При программировании C++ и Delphi мы использовали общую для нескольких проектов библиотеку написанных нами классов, которая хранилась отдельно от проектов и дополнялась и изменялась по мере выполнения проектов, изменения в этой библиотеке вносились прямо из разрабатываемых проектов и распространялись на все проекты.
Или такой вариант.
Для общих файлов в отдельном месте создаем отдельный проект типа ClassLibrary. Ко всем остальным (основным) солюшенам добавляем этот проект целиком через контекстное меню солюшена -> Add -> Existing Project....
Здравствуйте, Qbit86, Вы писали: Q>Доступность сборки из вкладки «.NET» окна «Add reference» никак не зависит от нахождения сборки в GAC'е.
Эт да, просто думается мне, что с DEVPATH проще всего. Не?