MSBuild не копирует DLL, а Visual Studio это делает
-
10-12-2019 - |
Вопрос
В нашем проекте Visual Studio 2010 мы ссылаемся, среди прочего, на SmartAssembly.Attributes.dll
и он правильно скопирован в Bin/Debug
или Bin/Release
папка наших локальных машин разработки.На сервере сборки это справедливо для всех остальных ссылок, но не для «SmartAssembly.Attributes.dll».Сборка успешна.
Что мне следует проверить?
Спасибо.
Решение
Откройте свой .csproj
файл (или .vbproj
файл) и найдите ссылку на сборку.Затем убедитесь, что путь подсказки по-прежнему действителен на вашем сервере сборки.Иногда VS2010 добавляет абсолютный путь подсказки вместо использования пути относительно пути. .csproj
сам файл, поэтому буква диска может быть недействительной на другом компьютере.
Например, ссылка может выглядеть аналогично приведенной ниже (я составил весь приведенный ниже XML только для иллюстрации, и он НЕ действителен), а абсолютный путь подсказки может быть недействительным на сервере сборки (например,нет буквы диска д там):
<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