Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nested Type can't be resolved in its indirection stub. #16

Closed
urasandesu opened this issue Sep 19, 2014 · 0 comments
Closed

Nested Type can't be resolved in its indirection stub. #16

urasandesu opened this issue Sep 19, 2014 · 0 comments
Labels

Comments

@urasandesu
Copy link
Owner

In Prig 0.0.0-alpha8, when I used Nested Type in indirection stub, I got some build errors. The trial code is the followings:

Target

using System;
namespace ConsoleApplication38
{
    public class Foo
    {
        public class Bar
        {
            public int Echo(int arg0)
            {
                return arg0;
            }
        }
    }
}

Stub Setting

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="prig" type="Urasandesu.Prig.Framework.PilotStubberConfiguration.PrigSection, Urasandesu.Prig.Framework" />
  </configSections>
  <prig>
    <stubs>
      <add name="EchoInt32" alias="EchoInt32">
        <RuntimeMethodInfo xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="http://www.w3.org/2001/XMLSchema" z:Id="1" z:FactoryType="MemberInfoSerializationHolder" z:Type="System.Reflection.MemberInfoSerializationHolder" z:Assembly="0" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" xmlns="http://schemas.datacontract.org/2004/07/System.Reflection">
          <Name z:Id="2" z:Type="System.String" z:Assembly="0" xmlns="">Echo</Name>
          <AssemblyName z:Id="3" z:Type="System.String" z:Assembly="0" xmlns="">ConsoleApplication38, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</AssemblyName>
          <ClassName z:Id="4" z:Type="System.String" z:Assembly="0" xmlns="">ConsoleApplication38.Foo+Bar</ClassName>
          <Signature z:Id="5" z:Type="System.String" z:Assembly="0" xmlns="">Int32 Echo(Int32)</Signature>
          <Signature2 z:Id="6" z:Type="System.String" z:Assembly="0" xmlns="">System.Int32 Echo(System.Int32)</Signature2>
          <MemberType z:Id="7" z:Type="System.Int32" z:Assembly="0" xmlns="">8</MemberType>
          <GenericArguments i:nil="true" xmlns="" />
        </RuntimeMethodInfo>
      </add>
    </stubs>
  </prig>
</configuration>

Build Errors

The build errors are followings:

1>------ ビルド開始: プロジェクト:ConsoleApplication38, 構成:Debug Any CPU ------
1>2014/09/19 19:39:22 にビルドを開始しました。
1>PreBuildEvent:
1>  cmd /c " "%VS120COMNTOOLS%VsDevCmd.bat" & %windir%\system32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NoProfile -File "C:\Users\Akira\Documents\Visual Studio 2013\Projects\ConsoleApplication38\packages\Prig.0.0.0-alpha8\tools\Invoke-PilotStubber.ps1" -ReferenceFrom "@('C:\Users\Akira\Documents\Visual Studio 2013\Projects\ConsoleApplication38\packages\Prig.0.0.0-alpha8\lib\net40\Urasandesu.NAnonym.dll','C:\Users\Akira\Documents\Visual Studio 2013\Projects\ConsoleApplication38\packages\Prig.0.0.0-alpha8\lib\net40\Urasandesu.Prig.Framework.dll')" -AssemblyFrom "C:\Users\Akira\Documents\visual studio 2013\Projects\ConsoleApplication38\ConsoleApplication38\bin\Debug\ConsoleApplication38.exe" -TargetFrameworkVersion v4.5.1 -KeyFile "C:\Users\Akira\Documents\Visual Studio 2013\Projects\ConsoleApplication38\packages\Prig.0.0.0-alpha8\tools\Urasandesu.Prig.snk" -OutputPath "C:\Users\Akira\Documents\Visual Studio 2013\Projects\ConsoleApplication38\ConsoleApplication38\bin\Debug\." -Settings "C:\Users\Akira\Documents\Visual Studio 2013\Projects\ConsoleApplication38\ConsoleApplication38\ConsoleApplication38.v4.0.30319.v1.0.0.0.prig" "
1>  Microsoft (R) Build Engine バージョン 12.0.30723.0
1>  [Microsoft .NET Framework、バージョン 4.0.30319.34014]
1>  Copyright (C) Microsoft Corporation. All rights reserved.
1>  
1>  2014/09/19 19:39:25 にビルドを開始しました。
1>  ノード 1 上のプロジェクト "C:\Users\Akira\Documents\Visual Studio 2013\Projects\ConsoleApplication38\ConsoleApplication38\ConsoleApplication38.v4.0.30319.v1.0.0.0.MSIL.Prig\ConsoleApplication38.Prig.g.csproj" (rebuild ターゲット)。
1>  CoreClean:
1>    ディレクトリ "obj\Debug\" を作成しています。
1>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5): warning MSB3270: 構築されているプロジェクトのプロセッサ アーキテクチャ "MSIL" と、参照 "mscorlib" のプロセッサ アーキテクチャ "x86" の間には不一致がありました。この不一致は、ランタイム エラーを発生させる可能性があります。プロジェクトと参照の間でプロセッサ アーキテクチャが一致するように、構成マネージャーを使用してターゲットとするプロジェクトのプロセッサ アーキテクチャを変更するか、ターゲットとするプロジェクトのプロセッサ アーキテクチャに一致するプロジェクト アーキテクチャとの依存関係を参照で設定することを検討してください。 [C:\Users\Akira\Documents\Visual Studio 2013\Projects\ConsoleApplication38\ConsoleApplication38\ConsoleApplication38.v4.0.30319.v1.0.0.0.MSIL.Prig\ConsoleApplication38.Prig.g.csproj]
1>  GenerateTargetFrameworkMonikerAttribute:
1>  すべての出力ファイルが入力ファイルに対して最新なので、ターゲット "GenerateTargetFrameworkMonikerAttribute" を省略します。
1>  CoreCompile:
1>    C:\Program Files (x86)\MSBuild\12.0\bin\Csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /platform:AnyCPU /define:_M_MSIL;_NET_4_5_1 /highentropyva+ /reference:"C:\Users\Akira\Documents\visual studio 2013\Projects\ConsoleApplication38\ConsoleApplication38\bin\Debug\ConsoleApplication38.exe" /reference:C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Core.dll" /reference:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll /reference:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Urasandesu.NAnonym\v4.0_0.2.0.0__ce9e95b04334d5fb\Urasandesu.NAnonym.dll /reference:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Urasandesu.Prig.Framework\v4.0_0.1.0.0__acabb3ef0ebf69ce\Urasandesu.Prig.Framework.dll /debug:pdbonly /filealign:512 /optimize+ /out:obj\Debug\ConsoleApplication38.v4.0.30319.v1.0.0.0.MSIL.Prig.dll /subsystemversion:6.00 /target:library /utf8output AutoGen\Tokens.g.cs ConsoleApplication38\PBar.cs ConsoleApplication38\PProxyBar.cs "C:\Users\Akira\AppData\Local\Temp\.NETFramework,Version=v4.5.1.AssemblyAttributes.cs"
1>C:\Users\Akira\Documents\Visual Studio 2013\Projects\ConsoleApplication38\ConsoleApplication38\ConsoleApplication38\PBar.cs(62,49): error CS0246: 型または名前空間名 'Bar' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 [C:\Users\Akira\Documents\Visual Studio 2013\Projects\ConsoleApplication38\ConsoleApplication38\ConsoleApplication38.v4.0.30319.v1.0.0.0.MSIL.Prig\ConsoleApplication38.Prig.g.csproj]
1>C:\Users\Akira\Documents\Visual Studio 2013\Projects\ConsoleApplication38\ConsoleApplication38\ConsoleApplication38\PBar.cs(90,52): error CS0246: 型または名前空間名 'Bar' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 [C:\Users\Akira\Documents\Visual Studio 2013\Projects\ConsoleApplication38\ConsoleApplication38\ConsoleApplication38.v4.0.30319.v1.0.0.0.MSIL.Prig\ConsoleApplication38.Prig.g.csproj]
1>  プロジェクト "C:\Users\Akira\Documents\Visual Studio 2013\Projects\ConsoleApplication38\ConsoleApplication38\ConsoleApplication38.v4.0.30319.v1.0.0.0.MSIL.Prig\ConsoleApplication38.Prig.g.csproj" (rebuild ターゲット) のビルドが終了しました -- 失敗。
1>  
1>  ビルドに失敗しました。
1>  
...(snip)...

I checked PBar.cs(62,49) to see what is cause for the errors:

            ...(snip)...

            public IndirectionInfo Info
            {
                get
                {
                    var info = new IndirectionInfo();
                    info.AssemblyName = "ConsoleApplication38, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
                    info.Token = TokenOfEchoInt32;
                    return info;
                }
            }
            internal void SetTargetInstanceBody(Bar /* !?!?!? */ target, IndirectionFunc<ConsoleApplication38.Foo.Bar, System.Int32, System.Int32> value)
            {
                RuntimeHelpers.PrepareDelegate(value);

                ...(snip)...

It seems that Bar should be specified its full name.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant