2013-10-11 8 views
6

Ich versuche, meine csproj Dateien einzurichten für Abhängigkeiten in einem übergeordneten Verzeichnis, indem zu suchen: rechtsmit AssemblySearchPaths in csproj Dateien

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

Ich habe diese als letzte Propertyelement vor dem ersten ItemGroup, die hat alle Referenzdeklarationen.

Leider verursachen diese alle anderen Verweise auf lösen scheitern, zum Beispiel:

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. 

Gibt es eine einfache Möglichkeit für mich msbuild zu sagen, wo für mein Projekt Abhängigkeiten suchen? Ich weiß, ich kann/p: ReferencePath, aber ich bevor Kompilation Logik in der csproj haben Dateien selbst eher als TFS-Team haben Baut diktieren, wo, schauen nicht zu erwähnen, dass ich möchte diese in der Lage sein, auf andere zu erstellenden Entwickler Maschinen.

Ich habe versucht, $ (AssemblySearchPaths) Bewegen in der Liste zuerst zu sein, aber das half nicht.

+0

.... – JohnZaj

Antwort

10

Können Sie den Wert der „AssemblySearchPaths“ Eigenschaft ändern innerhalb des Ziels „BeforeResolveReferences“ und sehen, ob das Ihr Problem löst?

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

Dies funktioniert. Das ist toll. Vielen Dank! Ist es möglich, AssemblySearchPaths rekursiv zu machen? Damit kann ich ein Verzeichnis root für alle meine Abhängigkeiten haben, aber haben sie in Ordner-Struktur organisiert? – JohnZaj

+2

prüfen Link http://www.beefycode.com/post/resolving-binary-references-in-msbuild.aspx – Isaiah4110

+0

der letzte Teil hat er ein neues Ziel geschaffen, die für die DLL – Isaiah4110

Verwandte Themen