2016-07-15 4 views
1

Bei zwei Projekten:ReSharper: Überschreibung Standard-Namespace zu verhindern „Namespace entspricht nicht Position in Datei“

  • Modell, Montage „Company.Product.Model“, Standard-Namespace „Company.Product.Model“
  • Model.Server, Montag "Company.Product.Model.Server", Standard-Namespace "Company.Product.Model.Server"

Wie Sie beiden Projekte haben verschiedenen Standard-Namensraum zu sehen. Es ist aus Gründen der Ressourcen - beide Projekte hat seine eigene resource.resx, die vollständige Namen auf der Grundlage von Standard-Namespaces des Projekts haben wird.

Aber beide Projekte haben Klassen in Bezug auf "Modell", also möchte ich, dass sie im selben Namensraum sind - "Company.Product.Model". Also benutze ich diesen Namensraum in beiden Projekten.

Das Problem ist, dass ReSharper erfordert, dass ich den Namespace "Company.Product.Model.Server" für Klassen im "Model.Server" -Projekt als Standard (Basis) -Namespace verwendet: "Namespace entspricht nicht dem Speicherort der Datei .. . "

Ich verstehe, dass es standardmäßig gut ist. Aber ich möchte dies überschreiben - und sagen, dass alle meine Klassen Namespaces auf "Company.Product.Model" basieren, ohne den Standard-Namespace des Projekts zu ändern.

Ist es möglich?

+1

Resharper zwingt Sie nicht, Ihre Namespaces zu ändern. Es rät nur, dass Sie tun. Mit den meisten Optionen gibt es die Möglichkeit, einen bestimmten Check vorübergehend zu deaktivieren. Versuchen Sie, auf die Glühbirne/den Schlüssel zu klicken, der erscheint, wenn Sie auf den "fehlerhaften" Namespace klicken, und Sie sollten (in dem Menü, das es hat) die Überprüfung vorübergehend deaktivieren. – Pheonyx

+1

"Wie Sie sehen können, haben beide Projekte unterschiedliche Standard-Namespaces. Es ist aus Gründen der Ressourcen". "Ja wirklich?" Beide sollten unterschiedliche Namespaces haben, da es sich um verschiedene Projekte/Assemblies handelt. Die Verwendung des Namespaces 'Company.Product.Model' für Klassen in' Model.Server' führt zu Verwirrung für andere Entwickler, da sie die Klassen in dem Projekt, in dem sie sich befinden, nicht finden. –

+0

@Pheonyx Sicher kann ich die Warnung deaktivieren aber ich will nicht. – Shrike

Antwort

3

Wenn Sie die Auswahl in einen der Ordner im Projektmappen-Explorer platzieren und dann das Eigenschaften-Werkzeugfenster anzeigen, gibt es dort eine Option namens "Namespace-Provider". Wenn Sie dies auf false setzen, schlägt ReSharper nicht mehr vor, dass Ihre Namespaces diesen Ordner enthalten sollten.

Weitere Informationen in the docs.

+0

Ja, aber meine Frage betrifft eine andere Sache. Ich habe ein Projekt mit dem Standard-Namespace "Company.Product.Model.Server" und einer Klasse Foo in diesem Projekt (nicht im Ordner) im Namespace "Company.Product.Model". Und ich möchte, dass R # diesen Namen korrekt behandelt ("Company.Product.Model.Foo") – Shrike

+0

Ah, richtig. Für den Stammordner müssten Sie den Standardnamespace in den Projekteigenschaften ändern. Dies würde sich jedoch auf alle untergeordneten Ordner im Projekt auswirken. Möchten Sie eine Klasse im Stammordner mit einem anderen Namespace als andere Klassen im Stammordner haben? Und was ist mit anderen Klassen im Projekt - verwenden sie den Standard-Namespace? Wie würdest du sehen, dass das am besten zu deinem Szenario passt? – citizenmatt

+0

Ich möchte nur den Basis-Namespace für alle Klassen in einem Projekt ändern, ohne die Option "Standard-Namespace" in den Projekteinstellungen zu ändern. Ich kann den "Standard-Namespace" nicht ändern, da dies die Namen der resx-Ressourcen dieses Projekts beeinflussen würde. – Shrike