Wie interne Schnittstellen sichtbar für Moq?
Ich habe 3 Projekt in meinem C# - Lösung.
- Signaturen
- Strukturen
- Tests
Signaturen mit öffentlichen und internen Schnittstellen.
Auch hat es
[assembly: InternalsVisibleTo("Structures")]
[assembly: InternalsVisibleTo("Tests")]
in AssemblyInfo.cs.
Strukturen in öffentlichen und internen Klassen und
[assembly: InternalsVisibleTo("Tests")]
in AssemblyInfo.cs.
Tests hat folgende Quelle:
<packages>
<package id="Moq" version="4.2.1409.1722" targetFramework="net45" />
<package id="NUnit" version="2.6.4" targetFramework="net45" />
<package id="NUnitTestAdapter" version="1.2" targetFramework="net45" />
</packages>
als NuGet-Pakete in Pakete.config.
Schrieb ich einige unit-test für die interne Schnittstelle von Signaturen und interne Klasse von Strukturen. Laufen, und hatte neben Ergebnis: Ausnahme:
Art Unterschriften.- Interfacex gehe nicht sichtbar ist DynamicProxy. Kann nicht erstellen Sie den proxy für Typen, die nicht zugänglich sind. Die Art öffentliche oder interne und markieren Sie Ihre Montage mit [assembly: InternalsVisibleTo(InternalsVisible.ToDynamicProxyGenAssembly2)] - Attribut.
Scheint logisch. Ich Hinzugefügt
[assembly: InternalsVisibleTo("InternalsVisible.DynamicProxyGenAssembly2")], um die Montage info von Signaturen und Strukturen-Projekte. Laufen, und hatte neben Ergebnis: Ausnahme:
Typ 'Burg.Proxys.IReminiscenceableDataTableProxy' aus assembly 'DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" ist der Versuch der Umsetzung einer unzugänglichen Oberfläche.
Dies war zu helfen, Tat es aber nicht.
Nur ändern sich die Ausnahme-Nachricht.
Wie zu beheben mein problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den vorgeschlagenen Update-Nachricht verwendet, um einen const - /statisches Feld für den Namen der assembly:
Sie eine Zeichenfolge, die entspricht nicht der assembly-name:
Ändern:
Sehen Sie die aktuellen assembly-name (der sollte in
InternalsVisibleTo
) in deiner Fehlermeldung:const
Mitglied, wie aus der Mitteilung finden Sie unterCastle.Core/Core/Internal/InternalsVisible.cs
, aber es scheint, dass aufgrund der Art und Weise Burg-Projekt eingebettet ist, innerhalb derMoq.dll
diese Klasse wird nicht-öffentlich, wenn er durch gesehen Moq, und weil es nicht zugänglich ist, nämlich[assembly: InternalsVisibleTo(Castle.Core.Internal.InternalsVisible.ToDynamicProxyGenAssembly2)]
wird nicht funktionieren. So müssen Sie Ihre eigenen magic-string.