2011-06-28 12 views
11

मैं Autofixture और Moq Nuget.So का उपयोग कर स्थापित मैं moq संस्करण 4.Autofixture और Moq v4

है निम्नलिखित कोड

var fixture = new Fixture().Customize(new AutoMoqCustomization()); 
fixture.CreateAnonymous<ISomething>(); 

चलाते समय निम्न त्रुटि

सिस्टम दिखाता है IO.FileLoadException: फ़ाइल या असेंबली लोड नहीं कर सकता 'Moq, संस्करण = 3.1.416.3, संस्कृति = तटस्थ, PublicKeyToken = 69f491c39445e920'

मैंने इसे v4 पर रीडायरेक्ट करने का भी प्रयास किया है, लेकिन बिना किसी किस्मत के।

<configuration> 
    <runtime> 
    <assemblyBinding> 
    <dependentAssembly> 
     <assemblyIdentity name="Moq" publicKeyToken="69f491c39445e920" culture="neutral"/> 
     <bindingRedirect oldVersion="3.1.416.3" newVersion="4.0.10827.0"/> 
    </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

यहां समस्या क्या हो सकती है?

+1

भी देखें इस टिकट से विरोध नहीं करता के रूप में प्रयोग समाप्त हो गया: http://autofixture.codeplex.com/workitem/4225 – svrist

+0

के रूप में [संस्करण 2.13.1] (https://github.com/AutoFixture/AutoFixture/tags) आवश्यक असेंबली बाध्यकारी रीडायरेक्ट अब [स्वचालित रूप से कॉन्फ़िगरेशन फ़ाइल में जोड़ा गया है] (https://github.com/AutoFixture/AutoFixture/pull/11) जब आप [AutoFixture.AutoMoq] इंस्टॉल करें (http://nuget.org/packages/AutoFixture.AutoMoq) NuGet पैकेज। –

उत्तर

17

आदेश में एक विन्यास फाइल में बाध्यकारी एक विधानसभा अनुप्रेषित करने के लिए, आप इस उदाहरण की तरह <assemblyBinding> element में urn:schemas-microsoft-com:asm.v1 नाम स्थान निर्दिष्ट करने के लिए, की जरूरत है:

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity name="Moq" 
            publicKeyToken="69f491c39445e920" 
            culture="neutral"/> 
       <bindingRedirect oldVersion="3.1.416.3" 
           newVersion="4.0.10827.0"/> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

ऐसा नहीं है कि पुस्तकालय एक साथ संकलित विधानसभाओं का कहना है दिलचस्प है .NET के पहले संस्करण (जैसे Moq 3 और AutoFixture 2.1) स्वचालित रूप से In-Process Side-by-Side execution की वजह से .NET 4.0 पर चल रही प्रक्रिया में लोड हो जाएंगे।

एक आवेदन .NET फ्रेमवर्क 4 क्रम लेकिन का उपयोग कर एक पुस्तकालय है कि बनाया गया था एक पहले क्रम का उपयोग कर भी शामिल है, कि पुस्तकालय संकलित किया गया है, तो .नेट फ्रेमवर्क का उपयोग करेगा: यहाँ इस बारे में MSDN से एक उद्धरण है 4 रनटाइम भी। हालांकि, अगर आप एक अनुप्रयोग है कि एक पहले क्रम और एक पुस्तकालय है कि .NET फ्रेमवर्क 4 का उपयोग कर बनाया गया था का उपयोग कर बनाया गया था है, तो आप अपने आवेदन भी .NET फ्रेमवर्क 4

का उपयोग करने के लिए मजबूर करना होगा

संबंधित संसाधन:

1

स्वीकृत उत्तर मेरे लिए काम नहीं करता है क्योंकि मैं उसी श्रेणी पुस्तकालय (गैर exe) से Moq 4 का उपयोग ऑटोफिक्चर के रूप में करना चाहता हूं। ऑटोमोइक। ऑटोफिक्चर से Moq 4 का समर्थन करने के लिए no plans भी प्रतीत होता है। मैं AutoFixture.AutoRhinoMocks अगले सबसे लोकप्रिय विकल्प है, जो Moq 4.

+3

आप क्या समस्याएं देख रहे हैं? मैं समस्याओं के बिना, वर्षों के लिए Moq 4 के साथ AutoFixture.AutoMoq का उपयोग कर रहा हूँ। –