MSBuild не копирует DLL, а Visual Studio - - PullRequest
3 голосов
/ 09 марта 2012

В нашем проекте Visual Studio 2010 мы ссылаемся, среди прочего, на SmartAssembly.Attributes.dll, и он правильно копируется в папку Bin/Debug или Bin/Release наших локальных машин разработчика.На сервере сборки это верно для всех других ссылок, но не для «SmartAssembly.Attributes.dll».Сборка выполнена успешно.

Что мне проверить?

Спасибо.

1 Ответ

6 голосов
/ 09 марта 2012

Откройте файл .csproj (или .vbproj файл) и найдите ссылку на сборку.Затем убедитесь, что путь подсказки все еще действителен на вашем сервере сборки.Иногда VS2010 добавляет абсолютный путь подсказки вместо использования одного относительно самого файла .csproj, поэтому буква диска может быть недопустимой на другом компьютере.

Например, ссылка может выглядеть аналогично приведенной ниже (я составил весь приведенный ниже XML только для иллюстрации, и он НЕ действителен), а абсолютный путь подсказки может быть недопустим на сервере сборки (например,там нет буквы диска d ):

<Reference
Include="SmartAssembly.Attributes, Version=8.0.0.0, 
       Culture=neutral, PublicKeyToken=b03f1f7f1ad5da3a,
       processorArchitecture=x86"> 
  <SpecificVersion>False</SpecificVersion>
  <Private>true<Private>

  <!-- The HintPath below should exist and be valid in your build server -->
  <HintPath>d:\temp\SmartAssembly.Attributes.dll<HintPath>
</Reference>

Вы можете изменить HintPath, чтобы он соответствовал файлу .csproj и, следовательно, был более общим.Например:

  <HintPath>..\libs\SmartAssembly.Attributes.dll<HintPath>

Другая проблема может заключаться в том, что <Private>true<Private> там нет.Этот атрибут сопоставлен со свойством CopyLocal в Visual Studio, поэтому, если он отсутствует в вашем .csproj, библиотека DLL не будет скопирована в bin\Debug или bin\Release MSBuild.См http://bronumski.blogspot.com/2009/06/project-reference-fun-and-games.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...