2014-02-05 3 views
9

Ich habe vor kurzem unsere Build-Plattform von einem alten Build auf Rake (frag nicht, ernsthaft) zu einem mit msbuild migriert. Da viele unserer Teammitglieder Visual Studio nicht verwenden (auch hier nicht fragen), sind sie daran gewöhnt, eine CS-Datei in den Projektordner einfügen zu können und sie einfach magisch als Teil des Builds erscheinen zu lassen .Wie verhindere ich, dass Visual Studio 2012 einen MSBuild 4-Platzhalter erweitert?

Als solche die CSPROJ-Datei für dieses Projekt umfasst die folgende Zeile:

<ItemGroup> 
    <Compile Include="**\*.cs" Exclude="obj" /> 
</ItemGroup> 

Dies funktioniert gut, wenn es über msbuild direkt kompilieren. Allerdings, wenn ich das Projekt in Visual Studio öffnen, entscheidet es, „helfend“ den Platzhalter in eine vollständige Liste der Dateien zu erweitern, scheinbar so schnell wie ich es öffnen:

<ItemGroup> 
    <Compile Include="Controller.cs" /> 
    <Compile Include="MyClass.cs" /> 
    <Compile Include="MyClass2.cs" /> 
    <Compile Include="etc/etc/Something.cs" /> 
    <!-- and so forth --> 
</ItemGroup> 

Während technisch noch das funktioniert, ist es auch verursacht Kummer, weil es die Wildcard-Fähigkeit entfernt.

Ich versuchte a technique shown on this page zu implementieren, aber ich konnte es nicht mit einfacher Kompilierung arbeiten.

Hat jemand dieses Problem schon einmal gehabt? Gibt es eine Möglichkeit, dies zu umgehen?

EDIT: Um zu klären, was ich meine "konnte es nicht zu arbeiten", das ist, was ich getan habe:

In Main.csproj, ich habe dies:

<!-- References in here --> 
</ItemGroup> 

<Import Project="Imports.proj" /> 

<ItemGroup> 
<!-- ProjectReferences down here --> 

Dann ich habe Imports.proj, mit diesem:

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ItemGroup> 
     <Compile Include="**\*.cs" Exclude="obj" /> 
    </ItemGroup> 
</Project> 

Wenn ich Main.csproj in Visual Studio öffnen, keine Dateien zeigen. Es könnte sein, dass die <Import> Zeile falsch ist?

Edit 2: Interessanterweise baut es immer noch über Visual Studio, es zeigt nur nicht die Dateien als Teil des Projekts.

+0

Die im verknüpften Artikel gezeigte Technik sollte gut tun afaik: importieren Sie einige .proj-Datei, in der Sie haben '. Was genau hast du probiert? Sind Sie sicher, dass Sie den Import an der richtigen Stelle abgelegt haben? – stijn

+0

@stijn Ich habe gerade die Frage mit dem, was ich versucht habe aktualisiert –

+0

Wie Ihre 'edit 2': ja, ich habe vergessen, diesen Teil zu erwähnen: die Dateien werden nicht in VS angezeigt und ich bin mir nicht bewusst, eine Möglichkeit, das zu beheben . Was es natürlich nicht sinnvoll macht, ein VS-Projekt zu haben. Aber wenn ich darüber nachdenke, befürchte ich, dass Projekte so gehandhabt werden: Im ersten Fall "repariert" VS die Platzhalter für Sie, sonst kann es die Dateien im Lösungs-Explorer wahrscheinlich nicht anzeigen. Im zweiten Fall ändert sich nichts, aber es werden keine Dateien angezeigt. Nicht sicher, ob es eine Lösung gibt. Wenn nicht, ist die beste Wette vielleicht ein kleines Tool, um die Projektdatei aus einer Vorlage zu generieren und alle CS-Dateien einzufügen ... – stijn

Antwort

12

ich genau das gleiche Problem hatte, so sehr, dass ich genau die gleiche Frage gestellt (Unwanted changes in .csproj file on build) 2 Tage nach hast du ohne zu bemerken, selbst:

Während ich nicht erklären kann, warum VS, dies zu tun entscheidet jedes Mal, wenn ein Projekt baut, muss ich eine Lösung für Sie versuchen, es ist identisch, wie ich um mein Problem:

<PropertyGroup> 
    <IncludePattern>**\*.cs</IncludePattern> 
    <ExcludePattern>obj</ExcludePattern> 
</PropertyGroup> 

<ItemGroup> 
    <Compile Include="$(IncludePattern)" Exclude="$(ExcludePattern)" /> 
</ItemGroup> 

VS verlässt Eigenschaften, wie sie ohne den Ausbau des Wildcard in eine vollständige Liste der Dateien

+1

Heck yeah!Du bist der beste! Ich wünschte, ich hätte eine Chance gehabt, früher zu reagieren und dies umzusetzen! –

Verwandte Themen