c# - ফাইল বা সমাবেশ লোড করা যায়নি "System.Net.Http, সংস্করণ=4.0.0.0, সংস্কৃতি=নিরপেক্ষ, PublicKeyToken=b03f5f7f11d50a3a"




visual-studio-2015 (9)

আপনার প্রকল্পটি নেট ফ্রেমওয়ার্ক 4.7.2 এ উন্নীত করে আপনি এটি ঠিক করতে পারেন। এটির উত্তর দিয়েছিলেন অ্যালেক্স ঘিয়ানদিয়া - এমএসএফটি । তিনি সত্যই এটি প্রাপ্য হিসাবে তাকে upvote যান!

এটি নেট ফ্রেমওয়ার্ক 4.7.1-এ একটি পরিচিত সমস্যা হিসাবে নথিভুক্ত করা হয়েছে।

কর্মপরিকল্পনা হিসাবে আপনি এই প্রকল্পগুলিতে এই লক্ষ্যগুলি যুক্ত করতে পারেন। তারা এসজিএন-তে প্রেরিত রেফারেন্সের তালিকা থেকে ডিজাইনফ্যাকডস টোফিল্টার সরিয়ে ফেলবে (এবং এসজিএন হয়ে গেলে এগুলি আবার যুক্ত করবে)

<Target Name="RemoveDesignTimeFacadesBeforeSGen" BeforeTargets="GenerateSerializationAssemblies">
  <ItemGroup>
    <DesignFacadesToFilter Include="System.IO.Compression.ZipFile" />
    <_FilterOutFromReferencePath Include="@(_DesignTimeFacadeAssemblies_Names->'%(OriginalIdentity)')" 
        Condition="'@(DesignFacadesToFilter)' == '@(_DesignTimeFacadeAssemblies_Names)' and '%(Identity)' != ''" /> 
    <ReferencePath Remove="@(_FilterOutFromReferencePath)" />
  </ItemGroup>
  <Message Importance="normal" Text="Removing DesignTimeFacades from ReferencePath before running SGen." /> </Target>

<Target Name="ReAddDesignTimeFacadesBeforeSGen" AfterTargets="GenerateSerializationAssemblies">
  <ItemGroup>
    <ReferencePath Include="@(_FilterOutFromReferencePath)" />
  </ItemGroup>
  <Message Importance="normal" Text="Adding back DesignTimeFacades from ReferencePath now that SGen has ran." />
</Target>

আরেকটি বিকল্প (মেশিন প্রশস্ত) হ'ল sgen.exe.config এ নিম্নলিখিত বাঁধাইয়ের পুনঃনির্দেশ যুক্ত করা:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.IO.Compression.ZipFile" publicKeyToken="b77a5c561934e089" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime> This will only work on machines with .NET Framework 4.7.1. installed. Once .NET Framework 4.7.2 is installed on that machine, this workaround should be removed.

আমি আমার ভিজ্যুয়াল স্টুডিও 2015 কমিউনিটি এবং এসকিউএল সার্ভার 2016 এক্সপ্রেস ইনস্টল করে একটি ক্লিন উইন্ডোজ 10 মেশিনে আমার প্রকল্পটি অনুলিপি করেছি। উইন্ডোজ 10 এবং ভিএস2015 বা এসকিউএল সার্ভারের সাথে ইনস্টল করা ছাড়া অন্য কোনও কাঠামো সংস্করণ ইনস্টল করা নেই।

আমি যখন ওয়েবএপি প্রকল্প শুরু করার চেষ্টা করি তখন আমি বার্তাটি পাই:

ফাইল বা সমাবেশ "সিস্টেম. নেট.এইচটিপি, সংস্করণ = 4.0.0.0, সংস্কৃতি = নিরপেক্ষ, পাবলিক্যকিটোকেন = b03f5f7f11d50a3a" বা এর অন্যতম নির্ভরতা লোড করা যায়নি। সিস্টেম নির্দিষ্ট ফাইল খুঁজে পাচ্ছি না.

প্রকল্পের প্যাকেজগুলির মধ্যে রয়েছে:

<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Tracing" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net45" />

.NET ফ্রেমওয়ার্ক 4.6.1 দিয়ে প্রকল্পটি তৈরির পরে, System.Net.Http ফাইলটি ফোল্ডারে পাওয়া যায় না।

ফাইলটির পথ নির্দেশ করে:

সি: \ প্রোগ্রাম ফাইলগুলি (x86) ference রেফারেন্স অ্যাসেমব্লিজগুলি \ মাইক্রোসফ্ট \ ফ্রেমওয়ার্ক N নেট ফ্রেমওয়ার্ক \ v4.6.1 \ System.Net.Http.dll

System.Net.Http.Formatting . System.Net.Http.Formatting ফাইলটির পথ:

সি: \ উন্নয়ন \ MyApp \ প্যাকেজ \ Microsoft.AspNet.WebApi.Client.5.2.3 \ liberal এর সংক্ষিপ্ত রূপ \ net45 \ System.Net.Http.Formatting.dll

পুরো প্রকল্পটির লক্ষ্য 4.5 বা লক্ষ্যমাত্রার উচিত?


আমার (.NET 4.6.1) এর জন্য এই সমস্যাটি পরিষ্কারভাবে সমাধান করার একমাত্র উপায় ছিল প্রকৃতপক্ষে System.Net.Http ব্যবহার করে এমন প্রকল্পের জন্য কেবল System.Net.Http V4.3.4 এ একটি নিউজ রেফারেন্স যুক্ত করা নয়, প্রারম্ভিক প্রকল্প (আমার ক্ষেত্রে একটি পরীক্ষা প্রকল্প)।

(যা আশ্চর্যজনক, কারণ সঠিক সিস্টেম.নেট.এইচটিপি.ডিএল পরীক্ষা প্রকল্পের বিন ডিরেক্টরিতে বিদ্যমান ছিল এবং। কনফিগ অ্যাসেমব্লিংবিংসকেও ঠিক দেখাচ্ছিল))


আমার একটি প্রকল্পে System.Net.Http এর উচ্চতর সংস্করণ সহ একটি নুগেট প্যাকেজ ছিল। এবং আমার স্টার্টআপ প্রকল্পে সিস্টেম.নেট.এইচটিপি বনাম to.০.০-তে উল্লেখ রয়েছে, আমি সবেমাত্র আমার প্রারম্ভিক প্রকল্পে System.Net.Http nuget প্যাকেজটি ইনস্টল করেছি এবং সমস্যার সমাধান করেছি


আমার ওয়েবকনফাইগ (বা app.config )- এ বাধ্যতামূলক তথ্য পরিবর্তন করা - আমার মতে একটি "হ্যাক" থাকাকালীন, একটি নুগেট প্যাকেজ আপডেটের পরে আপনার অ্যাপ্লিকেশনটিকে বাজেয়াপ্ত করে আপনাকে সিস্টেম.Net.Http দেওয়ার পরে আপনাকে আপনার প্রকল্পের সাথে এগিয়ে যাওয়ার অনুমতি দেয় move ত্রুটি।

নিউ ভার্সন = "4.0.0.0" সেট করুন

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.0.0.0" />
</dependentAssembly>

আমার জন্য, আমি নেট প্রকল্পের সর্বশেষতম সংস্করণ (। নেট ফ্রেমওয়ার্ক 4.6.1 থেকে 4.7.2 এ পরিবর্তন) চালানোর জন্য আমার প্রকল্পটি সেট করেছিলাম।

সবকিছুই কাজ করেছে, কোনও ত্রুটি নেই এবং ইস্যু ছাড়াই প্রকাশিত হয়নি এবং কেবলমাত্র সুযোগেই আমি সিস্টেমটি পেরিয়ে এসেছি। নেট.এইচটিপি ত্রুটি বার্তা, একটি ছোট, কঠোর-নোটিশে দেখানো হয়েছে, তবে আমি ওয়েবসাইটের উপর বেশ গুরুত্বপূর্ণ এপিআই অনুরোধ ' আমি কাজ করছি।

আমি 4.6.1 এ ফিরে এসেছি এবং সবকিছু আবার ঠিক আছে।


উপরের বাইন্ড-পুনঃনির্দেশটি আমার পক্ষে কাজ করে না তাই আমি System.Net.Http র রেফারেন্সটি System.Net.Http । এগুলি ছাড়া সবকিছু ঠিকঠাক বলে মনে হচ্ছে।

  <system.web>
    <compilation debug="true" targetFramework="4.7.2">
      <assemblies>
        <!--<add assembly="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />-->
        <add assembly="System.ComponentModel.Composition, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
      </assemblies>
    </compilation>
    <customErrors mode="Off" />
    <httpRuntime targetFramework="4.7.2" />
  </system.web>

নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন,

  1. ভিজ্যুয়াল স্টুডিওটি সর্বশেষ সংস্করণে আপডেট করুন (এটি গুরুত্বপূর্ণ)
  2. web.config থেকে সমস্ত বাঁধাই পুনঃনির্দেশগুলি সরান
  3. এটি .csproj ফাইলে যুক্ত করুন:

    <PropertyGroup>
      <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
      <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
    </PropertyGroup>
  4. প্রকল্প তৈরি করুন
  5. bin ফোল্ডারে একটি (WebAppName).dll.config ফাইল থাকা উচিত
  6. এটিতে পুনর্নির্দেশ করা উচিত, এগুলি web.config অনুলিপি করুন
  7. উপরের .csproj ফাইল থেকে সরান

এটি কাজ করা উচিত


নিম্নলিখিত পরিবর্তন করুন:

<bindingRedirect oldVersion="0.0.0.0-4.1.1.2" newVersion="4.1.1.2" />

নিম্নলিখিত সহ:

<bindingRedirect oldVersion="0.0.0.0-4.1.1.2" newVersion="4.0.0.0" />

ওয়েবকনফিগে


যদি আপনার সমাধানে একাধিক প্রকল্প রয়েছে, তবে ভিজ্যুয়াল স্টুডিওতে সমাধান আইকনে ডান ক্লিক করুন এবং 'সমাধানের জন্য নিউগেট প্যাকেজগুলি পরিচালনা করুন' নির্বাচন করুন, তারপরে আপনার সমস্ত প্রকল্পকে একই সংস্করণে একীকরণ করতে চতুর্থ ট্যাব 'একীকরণ' ক্লিক করুন ডিএলএল। এটি আপনাকে একীকরণের জন্য রেফারেন্সড অ্যাসেমব্লির একটি তালিকা দেবে। তালিকার প্রতিটি আইটেমে ক্লিক করুন, তারপরে ডানদিকের প্রদর্শিত ট্যাবটিতে ইনস্টল ক্লিক করুন।





visual-studio-2015