บางครั้งเมื่อคุณเพิ่มไลบรารีใหม่ในการแนะนำเวอร์ชันการปะทะกันของSystem.Windows.Interactivity.dll
.
ยกตัวอย่างเช่นแพคเกจ NuGet MVVM light
อาจต้อง v4.2 ของSystem.Windows.Interactivity.dll
แต่แพคเกจ NuGet Rx-XAML
อาจต้อง v4.5 System.Windows.Interactivity.dll
ของ การดำเนินการนี้จะป้องกันไม่ให้โปรเจ็กต์ทำงานได้เนื่องจากไม่ว่าSystem.Windows.Interactivity.dll
คุณจะรวมเวอร์ชันใดไว้ไลบรารีใดไลบรารีหนึ่งจะปฏิเสธที่จะรวบรวม
ในการแก้ไขให้เพิ่ม Assembly Binding Redirect โดยแก้ไขของคุณapp.config
ให้มีลักษณะดังนี้:
<?xml version="1.0"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Windows.Interactivity"
publicKeyToken="31bf3856ad364e35"
culture="neutral"/>
<bindingRedirect oldVersion="4.0.0.0"
newVersion="4.5.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
<appSettings>
<add key="TestKey" value="true"/>
</appSettings>
ไม่ต้องกังวลกับการเปลี่ยนแปลงPublicKeyToken
ค่าคงที่ในทุกเวอร์ชันเนื่องจากขึ้นอยู่กับชื่อของ. dll ไม่ใช่เวอร์ชัน
ตรวจสอบให้แน่ใจว่าคุณจับคู่newVersion
ในappConfig
เวอร์ชันของคุณกับเวอร์ชันจริงที่คุณชี้ไปที่: