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

Exception:: Member *** is declared in another module and needs to be imported #6

Closed
ryrychj opened this issue May 3, 2015 · 1 comment

Comments

@ryrychj
Copy link

ryrychj commented May 3, 2015

Hi,
I try use Scalpel.Fody, but I get exception:
Error 1 Fody: An unhandled exception occurred: Exception: Member 'PcapngUtils.Pcap.SectionHeader' is declared in another module and needs to be imported StackTrace: at Mono.Cecil.MetadataBuilder.LookupToken(IMetadataTokenProvider provider) at Mono.Cecil.SignatureWriter.WriteTypeSignature(TypeReference type) at Mono.Cecil.MetadataBuilder.GetFieldSignature(FieldReference field) at Mono.Cecil.MetadataBuilder.AddField(FieldDefinition field) at Mono.Cecil.MetadataBuilder.AddFields(TypeDefinition type) at Mono.Cecil.MetadataBuilder.AddType(TypeDefinition type) at Mono.Cecil.MetadataBuilder.AddTypeDefs() at Mono.Cecil.MetadataBuilder.BuildTypes() at Mono.Cecil.MetadataBuilder.BuildModule() at Mono.Cecil.ModuleWriter.<BuildMetadata>b__0(MetadataBuilder builder, MetadataReader _) at Mono.Cecil.ModuleDefinition.Read[TItem,TRet](TItem item, Func 3 read) at Mono.Cecil.ModuleWriter.BuildMetadata(ModuleDefinition module, MetadataBuilder metadata) at Mono.Cecil.ModuleWriter.WriteModuleTo(ModuleDefinition module, Stream stream, WriterParameters parameters) at Mono.Cecil.ModuleDefinition.Write(Stream stream, WriterParameters parameters) at Mono.Cecil.ModuleDefinition.Write(String fileName, WriterParameters parameters) at InnerWeaver.WriteModule() in c:\ConsoleBuildAgent\work\ed448661dbb30d2e\FodyIsolated\ModuleWriter.cs:line 18 at InnerWeaver.Execute() in c:\ConsoleBuildAgent\work\ed448661dbb30d2e\FodyIsolated\InnerWeaver.cs:line 65 Source: Mono.Cecil TargetSite: Mono.Cecil.MetadataToken LookupToken(Mono.Cecil.IMetadataTokenProvider) ScalpelProblem

My project contain nUnit framework. Exception occured, when first class has atribute [TestFixture], and second class contains object of first class (as field).

  1. First class
    [TestFixture]
    public sealed class SectionHeader
    {
    public UInt16 MajorVersion { get; set; }
    }
  2. Secons class
    public sealed class PcapWriter
    {
    public SectionHeader header = null;
    }

Here is an example project that can reproduce the issue:
https://dl.dropboxusercontent.com/u/75969946/ScalpelProblem.7z

I checked the source code but had no idea how to fix it :/.

@SimonCropp
Copy link
Member

so that is expected. Scalpel removes all test releated types. So since SectionHeader is marked with [TestFixture] it is removed. But you have a non-test related type PcapWriter which uses SectionHeader. So when it tries to write the assembly back it is pointing out that it cant find SectionHeader.

Either also remove PcapWriter with a [Scalpel.RemoveAttribute] or remove [TestFixture] from SectionHeader.

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

No branches or pull requests

2 participants