Frage

Ich habe zwei Versionen eines Projekts. Ein für Silverlight und ein für .NET. Das SL-Projekt hat die überwiegende Mehrheit der Codebasis darin. Ich möchte global alle Dateien aus dem SL-Projekt in die .NET-Version als verknüpfte Dateien hinzufügen. Ich habe es geschafft, so erfolgreich wie dies in der csproj-Datei für die .NET-Version zu tun:

<Compile Include="..\MyProj.Common.SL\**\*.cs" Exclude="..\MyProj.Common.SL\Properties\**">

Leider fügen diese alle Dateien direkt an die Wurzel meines Projektes ... so dass ich mit einer langen unleserlich Liste der verknüpften Dateien in dem .NET-Projekt am Ende. Ich wirklich wirklich wirklich nicht will, eine ganze doppelte Verzeichnisstruktur von Hand und handelt von Verzeichnisnamen Änderungen und Dateinamensänderungen und so weiter habe zu erhalten.

So ist es eine Möglichkeit, Visual Studio zu haben, die Verzeichnisstruktur beibehalten, wenn verknüpfte Dateien in der Platzhalter Weise hinzugefügt oben? Oder gibt es zumindest eine Möglichkeit, es zu machen Gruppe alle verknüpften Dateien zusammen unter einem Verzeichnis in dem .NET-Projekt wie MyProj.Common.SL.Links?

Die sehr am nächsten komme ich habe, ist den <Visible>false</Visible> unter dem <Compile>-Tag zu setzen, die effektiv die lange unleserlich Liste von mehr als 300 Dateien entfernt .... aber leider vermasselt ReSharper, die nicht mehr auf diese Dateien als gültig sieht und es geht auf alle Projekte verrückt, auf dem .NET-Projekt verweisen. Wenn ich einen Weg finden, um konnte nicht machen ReSharper bekommen alle vermasseln, das wäre zu einer akzeptable Lösung sein ...

Irgendwelche Vorschläge?

Danke.

War es hilfreich?

Lösung

Ich glaube, ich habe einen Weg gefunden, dies zu Arbeit zu bekommen:

<Compile Include="..\MyProj.Common.SL\**\*.cs" Exclude="..\MyProj.Common.SL\Properties\**">
  <Link>MyProj.Common.SL.LinkedFiles\MyProj.Common.SL.LinkedFiles</Link>
</Compile>

Es wird erstellen Sie eine MyProj.Common.SL.LinkedFiles Ordner und Gruppe alle verknüpften Dateien unter diesem Ordner.

Andere Tipps

ich glaube, ich würde dies tun:

  • Kopieren Sie die <Compile> Elemente bestehenden Projekt, das vermutlich haben z.B. Include="foo.cs" und Include="Folder\bar.cs"
  • Fügen Sie sie in das neue Projekt
  • Suchen und Ersetzen <Compile Include="(.*?)" /> mit <Compile Include="..\Other\$1" ><Link>$1</Link></Compile>

Ich weiß nicht, ob ich die Suche mit regulären Ausdrücken bekam und Syntax ersetzen genau richtig, aber der Punkt ist, haben Sie bereits ein gutes Projekt haben, sollten Sie schneiden können, einfügen, regex-ersetzen Sie es, das gleiche zu bekommen Satz von Dateien, nur aus einem anderen Ordner, und mit der gleichen Verzeichnisstruktur verwiesen wird.

Sie werden immer noch zwei haben CSPROJ an dieser Stelle zu halten ist, aber das ist auch leicht behoben. Nehmen Sie nun diese neue Liste der Kompilierung Elemente und sie in einer Datei namens z setzen „Common.csproj“, das die Eigenschaft Gruppe mit der Kompilierung Artikel nur enthält, und dann hat beiden Projekte <Import Include="..\Common.csproj" /> und beinhalten keine Compile Elemente ihrer eigenen.

Im Grunde genommen eine wenig Handarbeit für den Austausch einmal die CSPROJ Datei Refactoring, und dann denke ich, Sie setzen werden. Ich bin nicht sicher, ob dies ist die ‚einfachste‘ Weg Sie zu entsperren, aber ich denke, das klingt ungefähr wie das, was Sie für eine ‚ideale‘ Struktur mögen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top