У моєму рішенні Visual Studio є чотири проекти (усі націлені на .NET 3.5) - для моєї проблеми важливі лише ці два:
- MyBaseProject <- бібліотека цього класу посилається на сторонній файл DLL (elmah.dll)
- MyWebProject1 <- цей проект веб-додатків має посилання на MyBaseProject
Я додав посилання elmah.dll на MyBaseProject у Visual studio 2008, натиснувши "Додати довідку ..." → "Огляд" → виберіть "elmah.dll".
Властивості посилання Elmah такі:
- Псевдоніми - глобальні
- Копіювати локальне - правда
- Культура -
- Опис - Модулі та оброблювачі помилок (ELMAH) для ASP.NET
- Тип файлу - Збірка
- Шлях - D: \ webs \ other Folder \ _myPath \ __ інструменти \ elmah \ Elmah.dll
- Вирішено - Правда
- Версія виконання - v2.0.50727
- Вказана версія - помилкова
- Сильне ім'я - хибне
- Версія - 1.0.11211.0
У MyWebProject1 я додав посилання на Project MyBaseProject шляхом: "Додати довідку ..." → "Вкладки проектів" → вибору "MyBaseProject". Властивості цієї посилання однакові, за винятком наступних членів:
- Опис -
- Шлях - D: \ webs \ CMS \ MyBaseProject \ bin \ Debug \ MyBaseProject.dll
- Версія - 1.0.0.0
Якщо я запускаю збірку у Visual Studio, файл elmah.dll копіюється у бін каталог MyWebProject1 разом із MyBaseProject.dll!
Однак якщо я очищую та запускаю MSBuild для рішення (через D: \ webs \ CMS> C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ MSBuild.exe / t: ReBuild / p: Configuration = Debug MyProject.sln ) elmah.dll відсутній у каталозі бін MyWebProject1 - хоча сама збірка не містить попереджень та помилок!
Я вже переконався, що .csproj MyBaseProject містить приватний елемент зі значенням "true" (це має бути псевдонім для " copy local " у Visual Studio):
<Reference Include="Elmah, Version=1.0.11211.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\mypath\__tools\elmah\Elmah.dll</HintPath>
**<Private>true</Private>**
</Reference>
(За замовчуванням приватний тег не з’явився у xml .csproj, хоча Visual Studio сказав "копіювати локальне" істинно. Я переключив "копіювати локальний" на помилковий - збережений - і знову повернув його до істинного - збережіть!)
Що не так з MSBuild? Як мені отримати посилання (elmah.dll), скопійоване у кошик MyWebProject1?
Я НЕ хочу додавати післякопіювальну копію дії до команди післязбудови кожного проекту! (Уявіть, у мене було б багато проектів залежних від MyBaseProject!)