2013-10-11 2 views
6

Я пытаюсь настроить мои csproj файлы для поиска зависимостей в родительском каталоге, добавив:с использованием AssemblySearchPaths в csproj файлов

<PropertyGroup> 
    <AssemblySearchPaths> 
     ..\Dependencies\VS2012TestAssemblies\; $(AssemblySearchPaths) 
    </AssemblySearchPaths> 
</PropertyGroup> 

Я добавил это как последний элемент PropertyGroup прямо перед первым ItemGroup, который имеет все ссылочные объявления. там

ResolveAssemblyReferences: 
     Primary reference "Microsoft.CSharp". 
    9>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1578,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.CSharp". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. 
For SearchPath "..\Dependencies\VS2012TestAssemblies\". 
       Considered "..\Dependencies\VS2012TestAssemblies\Microsoft.CSharp.winmd", but it didn't exist. 
       Considered "..\Dependencies\VS2012TestAssemblies\Microsoft.CSharp.dll", but it didn't exist. 
       Considered "..\Dependencies\VS2012TestAssemblies\Microsoft.CSharp.exe", but it didn't exist. 

простой способ для меня, чтобы сказать MSBuild туда, где искать зависимости моего проекта:

К сожалению, это вызывает все остальные ссылки на не решить, например? Я понимаю, что могу использовать/p: ReferencePath, однако я предпочитаю иметь логику компиляции в самих файлах csproj, а не в том, что TFS Team Builds диктует, где искать, не говоря уже о том, что мне хотелось бы, чтобы это могло быть скомпилировано на другом разработчиками машин.

Я попытался переместить $ (AssemblySearchPaths), чтобы быть первым в списке, но это не помогло.

+0

.... – JohnZaj

ответ

10

Можете ли вы изменить значение свойства AssemblySearchPaths в целевом «BeforeResolveReferences» и посмотреть, решит ли это вашу проблему?

<Target Name="BeforeResolveReferences"> 
<CreateProperty 
    Value="..\Dependencies\VS2012TestAssemblies;$(AssemblySearchPaths)"> 
    <Output TaskParameter="Value" 
     PropertyName="AssemblySearchPaths" /> 
</CreateProperty> 
</Target> 
+0

Это работает. Отлично. Благодаря! Можно ли результировать AssemblySearchPaths? Так что у меня может быть один «корневой» каталог для всех моих зависимостей, но они организованы в дереве папок? – JohnZaj

+2

Проверьте эту ссылку http://www.beefycode.com/post/resolving-binary-references-in-msbuild.aspx – Isaiah4110

+0

Последняя часть он создал новую цель, которая ищет DLL – Isaiah4110

Смежные вопросы