Allein das Befolgen des grundlegenden Tutorials führt mich zu einem schwer zu behebenden Fehler und nicht zu der demonstrierten Ausgabe.
Nehmen wir an, ich erstelle ein einfaches VS-C#-Projekt und verwende Code wie diesen (z. B. einen einfachen Beispielpunkt). Struktur, das einfachste, was nur zu Demonstrationszwecken schief geht):
Code: Select all
namespace myProject {
struct myPoint {
int x;
int y;
public myPoint(int newX, int newY) {
x = newX; y = newY;
}
// (... implement add, subtract, equals, etc...)
}
}
Code: Select all
using myProject;
namespace myProjectTest {
[TestClass]
public sealed class myProjectTest {
[TestMethod]
public void TestAddingPoints() {
myPoint pt = new myPoint();
// Test code goes here.
}
}
}
Der Versuch, Änderungen vorzunehmen, um den Fehler auf den unteren Ebenen zu beheben (z. B. das manuelle Erstellen einer benutzerdefinierten „assemblyInfo.cs“), kann dazu führen, dass entweder diese Änderungen überschrieben werden oder Sie einige verlieren andere Funktionen innerhalb der IDE (da Dinge, die Sie in bestimmten Bildschirmen tun, in „assemblyInfo.cs“ landen, wie z. B. die Angabe Ihrer Versionsnummer). Das scheint der falsche Ansatz zu sein.
Auf der Suche nach sinnvollen Standardwerten ist es im Jahr 2025 eine gute Möglichkeit, einfach ein Unit-Test-Projekt zu schreiben und anstatt einen eigenen Plan zu entwickeln, die bereits bereitgestellten Standardvorlagen usw. zu verwenden, um Ihren Code effektiv zu testen, ohne viel Zeit damit zu verschwenden, die (sehr, sehr komplizierten) Interna der Assembly-Signatur und die Art und Weise, wie Projektdateien zusammen kompiliert werden, zu verstehen, ohne dabei etwas zu tun wie „Einfach alles als öffentlich markieren“, wenn das Ziel darin besteht, irgendwann Produktionscode schreiben zu können, der nicht nur alle darin enthaltenen Methoden ankündigt. Abgesehen von den IP-Aspekten gibt es auch die Unpraktikabilität, interne Methoden, die für einen Verbraucher nutzlos sind, nicht zu verbergen.
Einige Recherche: Indem ich einfach eine Referenz in VS hinzufüge und wenn ich in den Dateien für InternalsVisibleToAttribute wühle, finde ich Folgendes, was ich laut Online-Quellen zur .csproj-Datei hinzufügen könnte:
Code: Select all
MyProjectTest
Das ist nicht das oben Genannte, weil es nicht funktioniert (Überraschung, 2019 ist auch zu sehr veraltet). Ich konnte nichts Neues finden, das mir die Syntax erklärt.
Ich habe auch ein anderes Benennungsschema ausprobiert, bei dem ich mein Testprojekt benenne
Code: Select all
myProject.tests
Eine (zugegebenermaßen sehr alberne) Möglichkeit, das Problem zu lösen, besteht darin, einfach
einzugeben
Code: Select all
[assembly: InternalsVisibleTo("myProject.tests")]
Wenn es relevant ist, ist die .NET-Version normalerweise 4.8 (letzte Version mit vollständiger Win-API).
Mobile version