Note
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãµã€ã³ã€ã³ãŸãã¯ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
泚
ãã®èšäºã¯ .NET Framework ã«åºæã®ãã®ã§ãã .NET 6 以éã®ããŒãžã§ã³ãå«ãã.NET ã®æ°ããå®è£ ã«ã¯é©çšãããŸããã
.NET Framework ã¢ããªã±ãŒã·ã§ã³ãæ£åžžã«ãããã€ããã«ã¯ãå ±éèšèªã©ã³ã¿ã€ã ãã¢ããªã±ãŒã·ã§ã³ãæ§æããã¢ã»ã³ããªãèŠã€ããŠãã€ã³ãããæ¹æ³ãçè§£ããå¿ èŠããããŸãã æ¢å®ã§ã¯ãã©ã³ã¿ã€ã ã¯ãã¢ããªã±ãŒã·ã§ã³ããã«ããããã¢ã»ã³ããªã®æ£ç¢ºãªããŒãžã§ã³ãšã®ãã€ã³ãã詊ã¿ãŸãã ãã®æ¢å®ã®åäœã¯ãæ§æãã¡ã€ã«ã®èšå®ã«ãã£ãŠãªãŒããŒã©ã€ãã§ããŸãã
å ±éèšèªã©ã³ã¿ã€ã ã¯ãã¢ã»ã³ããªãæ€çŽ¢ããŠã¢ã»ã³ããªåç §ã解決ããããšãããšãã«ãããã€ãã®æé ãå®è¡ããŸãã åæé ã«ã€ããŠã¯ã次ã®ã»ã¯ã·ã§ã³ã§èª¬æããŸãã ãããŒããšããçšèªã¯ãã©ã³ã¿ã€ã ãã¢ã»ã³ããªãæ€çŽ¢ããæ¹æ³ãèšè¿°ãããšãã«ãã䜿çšãããŸããååãšã«ã«ãã£ã«åºã¥ããŠã¢ã»ã³ããªãæ€çŽ¢ããããã«äœ¿çšããããã¥ãŒãªã¹ãã£ãã¯ã®ã»ãããåç §ããŸãã
泚
Windows SDK ã«å«ãŸããŠãã ã¢ã»ã³ã㪠ãã€ã³ã ãã° ãã¥ãŒã¢ãŒ (Fuslogvw.exe) ã䜿çšããŠããã° ãã¡ã€ã«å ã®ãã€ã³ãæ å ±ã衚瀺ã§ããŸãã
ãã€ã³ãã®éå§
ã¢ã»ã³ããªãæ€çŽ¢ããŠãã€ã³ãããããã»ã¹ã¯ãã©ã³ã¿ã€ã ãå¥ã®ã¢ã»ã³ããªãžã®åç §ã解決ããããšãããšãã«éå§ãããŸãã ãã®åç §ã«ã¯ãéçãŸãã¯åçã®ãããããæå®ã§ããŸãã ã³ã³ãã€ã©ã¯ããã«ãæã«ã¢ã»ã³ã㪠ãããã§ã¹ãã®ã¡ã¿ããŒã¿ã«éçåç §ãèšé²ããŸãã åçåç §ã¯ã Assembly.Loadãªã©ã®ããŸããŸãªã¡ãœãããåŒã³åºããçµæãšããŠããã®å Žã§æ§ç¯ãããŸãã
ã¢ã»ã³ããªãåç §ããæšå¥šãããæ¹æ³ã¯ãã¢ã»ã³ããªåãããŒãžã§ã³ãã«ã«ãã£ãå ¬éã㌠ããŒã¯ã³ (ååšããå Žå) ãå«ãå®å šãªåç §ã䜿çšããããšã§ãã ã©ã³ã¿ã€ã ã¯ããã®ã»ã¯ã·ã§ã³ã§åŸè¿°ããæé ã«åŸã£ãŠããã®æ å ±ã䜿çšããŠã¢ã»ã³ããªãæ€çŽ¢ããŸãã ã©ã³ã¿ã€ã ã¯ãåç §ãéçã¢ã»ã³ããªçšãåçã¢ã»ã³ããªçšãã«é¢ä¿ãªããåã解決ããã»ã¹ã䜿çšããŸãã
ã¢ã»ã³ããªåã®ã¿ãæå®ãããªã©ãã¢ã»ã³ããªã«é¢ããéšåçãªæ å ±ã®ã¿ãåŒã³åºãå ã®ã¡ãœããã«æäŸããããšã§ãã¢ã»ã³ããªãžã®åçåç §ãè¡ãããšãã§ããŸãã ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ ãã£ã¬ã¯ããªã®ã¿ãã¢ã»ã³ããªãæ€çŽ¢ããä»ã®ãã§ãã¯ã¯è¡ãããŸããã Assembly.LoadãAppDomain.Loadãªã©ã®ã¢ã»ã³ããªãèªã¿èŸŒãã«ã¯ãããŸããŸãªæ¹æ³ã®ããããã䜿çšããŠéšååç §ãè¡ããŸãã
æåŸã«ã Assembly.Load ãªã©ã®ã¡ãœããã䜿çšããŠåçåç §ãäœæããéšåçãªæ å ±ã®ã¿ãæå®ã§ããŸãããã®åŸãã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã® <qualifyAssembly> èŠçŽ ã䜿çšããŠåç §ã修食ããŸãã ãã®èŠçŽ ã䜿çšãããšãã³ãŒãã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã«å®å šãªåç §æ å ± (ååãããŒãžã§ã³ãã«ã«ãã£ãããã³è©²åœããå Žåã¯å ¬éã㌠ããŒã¯ã³) ãæå®ã§ããŸãã ãã®ææ³ã¯ãã¢ããªã±ãŒã·ã§ã³ ãã£ã¬ã¯ããªã®å€éšã«ããã¢ã»ã³ããªãžã®åç §ãå®å šã«ä¿®é£Ÿããå ŽåããŸãã¯ã°ããŒãã« ã¢ã»ã³ã㪠ãã£ãã·ã¥å ã®ã¢ã»ã³ããªãåç §ããå¿ èŠãããããã³ãŒãã§ã¯ãªãæ§æãã¡ã€ã«ã§å®å šãªåç §ãæå®ããå©äŸ¿æ§ãå¿ èŠãªå Žåã«äœ¿çšããŸãã
泚
ãã®çš®é¡ã®éšååç §ã¯ãè€æ°ã®ã¢ããªã±ãŒã·ã§ã³éã§å ±æãããã¢ã»ã³ããªã§ã¯äœ¿çšããªãã§ãã ããã æ§æèšå®ã¯ã¢ããªã±ãŒã·ã§ã³ããšã«é©çšãããã¢ã»ã³ããªããšã«é©çšãããªãããããã®çš®é¡ã®éšååç §ã䜿çšããå ±æã¢ã»ã³ããªã§ã¯ãå ±æã¢ã»ã³ããªã䜿çšããåã¢ããªã±ãŒã·ã§ã³ããã®æ§æãã¡ã€ã«ã«ä¿®é£Ÿæ å ±ãå«ããå¿ èŠããããŸãã
ã©ã³ã¿ã€ã ã¯ãæ¬¡ã®æé ã䜿çšããŠã¢ã»ã³ããªåç §ã解決ããŸãã
ã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ãçºè¡å ããªã·ãŒ ãã¡ã€ã«ãã³ã³ãã¥ãŒã¿ãŒæ§æãã¡ã€ã«ãªã©ã該åœããæ§æãã¡ã€ã«ã調ã¹ãããšã§ãé©åãªã¢ã»ã³ã㪠ã®ããŒãžã§ã³ã確èªããŸãã æ§æãã¡ã€ã«ããªã¢ãŒã ã³ã³ãã¥ãŒã¿ãŒäžã«ããå Žåãã©ã³ã¿ã€ã ã¯æåã«ã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ãèŠã€ããŠããŠã³ããŒãããå¿ èŠããããŸãã
ã¢ã»ã³ããªåã以åã«ãã€ã³ããããŠãããã©ãããç¢ºèª ãããã€ã³ããããŠããå Žåã¯ã以åã«èªã¿èŸŒãŸããã¢ã»ã³ããªã䜿çšããŸãã ã¢ã»ã³ããªãèªã¿èŸŒãåã®èŠæ±ã倱æããå ŽåãèŠæ±ã¯ããã«å€±æããã¢ã»ã³ããªãèªã¿èŸŒãããšããŸããã
泚
ã¢ã»ã³ã㪠ãã€ã³ããšã©ãŒã®ãã£ãã·ã¥ã¯ã.NET Framework ããŒãžã§ã³ 2.0 ã®æ°æ©èœã§ãã
ã°ããŒãã« ã¢ã»ã³ã㪠ãã£ãã·ã¥ã確èªããŸãã ã¢ã»ã³ããªãèŠã€ãã£ãå Žåãã©ã³ã¿ã€ã ã¯ãã®ã¢ã»ã³ããªã䜿çšããŸãã
ã¢ã»ã³ããªçšã®ãããŒãã¯æ¬¡ã®ã¹ãããã䜿çšããŸãã
æ§æãšçºè¡å ã®ããªã·ãŒãå ã®åç §ã«åœ±é¿ãäžããªãå Žåãããã³ãã€ã³ãèŠæ±ã Assembly.LoadFrom ã¡ãœããã䜿çšããŠäœæãããå Žåãã©ã³ã¿ã€ã ã¯å Žæã®ãã³ãããã§ãã¯ããŸãã
æ§æãã¡ã€ã«ã«ã³ãŒãããŒã¹ãèŠã€ãã£ãå Žåãã©ã³ã¿ã€ã ã¯ãã®å Žæã®ã¿ããã§ãã¯ããŸãã ãã®ãããŒãã倱æããå Žåãã©ã³ã¿ã€ã ã¯ãã€ã³ãã£ã³ã°èŠæ±ã倱æããä»ã®ãããŒãã¯çºçããªããšå€æããŸãã
ãããŒãã³ã°ã»ã¯ã·ã§ã³ã§èª¬æãããŠãããã¥ãŒãªã¹ãã£ãã¯ã䜿çšããŠã¢ã»ã³ããªã®ããã«ãããŒãããŸãã ãããŒãåŸã«ã¢ã»ã³ããªãèŠã€ãããªãå Žåãã©ã³ã¿ã€ã ã¯ãã¢ã»ã³ããªãæäŸããããã« Windows ã€ã³ã¹ããŒã©ãŒã«èŠæ±ããŸãã ããã¯ããªã³ããã³ãã€ã³ã¹ããŒã«æ©èœãšããŠæ©èœããŸãã
泚
å³å¯ãªååãæããªãã¢ã»ã³ããªã®ããŒãžã§ã³ ãã§ãã¯ããå³å¯ãªååãæããªãã¢ã»ã³ããªã®ã°ããŒãã« ã¢ã»ã³ã㪠ãã£ãã·ã¥ã®ã©ã³ã¿ã€ã ãã§ãã¯ããããŸããã
æé 1: æ§æãã¡ã€ã«ã調ã¹ã
ã¢ã»ã³ã㪠ãã€ã³ãåäœã¯ã次㮠3 ã€ã® XML ãã¡ã€ã«ã«åºã¥ããŠç°ãªãã¬ãã«ã§æ§æã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã
çºè¡å ããªã·ãŒ ãã¡ã€ã«ã
ãã·ã³æ§æãã¡ã€ã«ã
ãããã®ãã¡ã€ã«ã¯åãæ§æã«åŸãããã€ã³ã ãªãã€ã¬ã¯ããã³ãŒãã®å Žæãç¹å®ã®ã¢ã»ã³ããªã®ãã€ã³ã ã¢ãŒããªã©ã®æ
å ±ãæäŸããŸãã åæ§æãã¡ã€ã«ã«ã¯ããã€ã³ã ããã»ã¹ããªãã€ã¬ã¯ããã <assemblyBinding> èŠçŽ ãå«ããããšãã§ããŸãã
<assemblyBinding>èŠçŽ ã®åèŠçŽ ã«ã¯ã<dependentAssembly>èŠçŽ ãå«ãŸããŸãã
<dependentAssembly>èŠçŽ ã®åã«ã¯ã<assemblyIdentity>èŠçŽ ã<bindingRedirect>èŠçŽ ãããã³<codeBase>èŠçŽ ãå«ãŸããŸãã
泚
æ§ææ å ±ã¯ã3 ã€ã®æ§æãã¡ã€ã«ã«ãããŸãããã¹ãŠã®èŠçŽ ããã¹ãŠã®æ§æãã¡ã€ã«ã§æå¹ãªããã§ã¯ãããŸããã ããšãã°ããã€ã³ã ã¢ãŒããšãã©ã€ããŒã ãã¹ã®æ å ±ã¯ãã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã«ã®ã¿å«ããããšãã§ããŸãã åãã¡ã€ã«ã«å«ãŸããæ å ±ã®å®å šãªäžèЧã«ã€ããŠã¯ããæ§æãã¡ã€ã«ã 䜿çšããã¢ããªã®æ§æããåç §ããŠãã ããã
ã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«
æåã«ãå ±éèšèªã©ã³ã¿ã€ã ã¯ãåŒã³åºãå ã¢ã»ã³ããªã®ãããã§ã¹ãã«æ ŒçŽãããŠããããŒãžã§ã³æ å ±ããªãŒããŒã©ã€ãããæ å ±ã«ã€ããŠãã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ããã§ãã¯ããŸãã ã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã¯ã¢ããªã±ãŒã·ã§ã³ãšå ±ã«ãããã€ã§ããŸãããã¢ããªã±ãŒã·ã§ã³ã®å®è¡ã«ã¯å¿ èŠãããŸããã éåžžããã®ãã¡ã€ã«ã®ååŸã¯ã»ãŒç¬æã«è¡ãããŸãããWeb ããŒã¹ã®ã·ããªãªãªã©ããªã¢ãŒã ã³ã³ãã¥ãŒã¿ãŒäžã«ã¢ããªã±ãŒã·ã§ã³ ããŒã¹ãããå Žåã¯ãæ§æãã¡ã€ã«ãããŠã³ããŒãããå¿ èŠããããŸãã
ã¯ã©ã€ã¢ã³ãå®è¡å¯èœãã¡ã€ã«ã®å Žåãã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã¯ã¢ããªã±ãŒã·ã§ã³ã®å®è¡å¯èœãã¡ã€ã«ãšåããã£ã¬ã¯ããªã«ååšãã.config æ¡åŒµåãæã€å®è¡å¯èœãã¡ã€ã«ãšåãããŒã¹åãæã¡ãŸãã ããšãã°ãC:\Program Files\Myapp\Myapp.exe ã®æ§æãã¡ã€ã«ã¯ C:\Program Files\Myapp\Myapp.exe.configããã©ãŠã¶ãŒ ããŒã¹ã®ã·ããªãªã§ã¯ãHTML ãã¡ã€ã«ã§ <link> èŠçŽ ã䜿çšããŠæ§æãã¡ã€ã«ãæç€ºçã«ãã€ã³ãããå¿
èŠããããŸãã
次ã®ã³ãŒãã¯ãã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã®ç°¡åãªäŸã瀺ããŠããŸãã æ¬¡ã®äœ¿çšäŸã¯ãTextWriterTraceListener ã³ã¬ã¯ã·ã§ã³ã«Listenersã远å ããŠããããã°æ å ±ããã¡ã€ã«ã«èšé²ã§ããããã«ããŸãã
<configuration>
<system.diagnostics>
<trace useGlobalLock="false" autoflush="true" indentsize="0">
<listeners>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener, system version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
ãããªãã·ã£ãŒ ããªã·ãŒ ãã¡ã€ã«
第2ã«ãå®è¡æã«çºè¡è ããªã·ãŒ ãã¡ã€ã«ãååšããå Žåãããã調æ»ããŸãã ãããªãã·ã£ãŒ ããªã·ãŒ ãã¡ã€ã«ã¯ãã³ã³ããŒãã³ããããªãã·ã£ãŒã«ãã£ãŠä¿®æ£ããã°ã©ã ãšããŠé åžãããããå ±æã³ã³ããŒãã³ãã«æŽæ°ãããŸãã ãããã®ãã¡ã€ã«ã«ã¯ãã¢ã»ã³ããªåç §ãæ°ããããŒãžã§ã³ã«è»¢éããå ±æã³ã³ããŒãã³ãã®çºè¡å ã«ãã£ãŠçºè¡ãããäºææ§æ å ±ãå«ãŸããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ããã³ãã·ã³æ§æãã¡ã€ã«ãšã¯ç°ãªãããããªãã·ã£ãŒ ããªã·ãŒ ãã¡ã€ã«ã¯ãã°ããŒãã« ã¢ã»ã³ã㪠ãã£ãã·ã¥ã«ã€ã³ã¹ããŒã«ããå¿ èŠãããç¬èªã®ã¢ã»ã³ããªã«å«ãŸããŠããŸãã
ãããªãã·ã£ãŒ ããªã·ãŒæ§æãã¡ã€ã«ã®äŸã次ã«ç€ºããŸãã
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="asm6" publicKeyToken="c0305c36380ba429" />
<bindingRedirect oldVersion="3.0.0.0" newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
ã¢ã»ã³ããªãäœæããã«ã¯ã次ã®ãããªã³ãã³ãã§ Al.exe (ã¢ã»ã³ã㪠ãªã³ã«ãŒ) ããŒã«ã䜿çšã§ããŸãã
Al.exe /link:asm6.exe.config /out:policy.3.0.asm6.dll /keyfile: compatkey.dat /v:3.0.0.0
compatkey.dat ã¯å³å¯ãªååã®ã㌠ãã¡ã€ã«ã§ãã ãã®ã³ãã³ããå®è¡ãããšãã°ããŒãã« ã¢ã»ã³ã㪠ãã£ãã·ã¥ã«é
眮ã§ããå³å¯ãªååã®ã¢ã»ã³ããªãäœæãããŸãã
泚
ãããªãã·ã£ãŒ ããªã·ãŒã¯ãå ±æã³ã³ããŒãã³ãã䜿çšãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«åœ±é¿ããŸãã
çºè¡å ããªã·ãŒæ§æãã¡ã€ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ (ã€ãŸããã¢ã»ã³ã㪠ãããã§ã¹ããŸãã¯ã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«) ããååŸãããããŒãžã§ã³æ å ±ããªãŒããŒã©ã€ãããŸãã ã¢ã»ã³ã㪠ãããã§ã¹ãã§æå®ãããããŒãžã§ã³ããªãã€ã¬ã¯ãããã¹ããŒãã¡ã³ããã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã«ååšããªãå Žåã¯ãã¢ã»ã³ã㪠ãããã§ã¹ãã§æå®ãããããŒãžã§ã³ããããªãã·ã£ãŒ ããªã·ãŒ ãã¡ã€ã«ã«ãã£ãŠãªãŒããŒã©ã€ããããŸãã ãã ããã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã«ãªãã€ã¬ã¯ã ã¹ããŒãã¡ã³ããããå Žåã¯ããããã§ã¹ãã§æå®ãããããŒãžã§ã³ã§ã¯ãªãããããªãã·ã£ãŒ ããªã·ãŒã«ãã£ãŠãã®ããŒãžã§ã³ããªãŒããŒã©ã€ããããŸãã
å ±æã³ã³ããŒãã³ããæŽæ°ããããã®ã³ã³ããŒãã³ãã䜿çšãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãæ°ããããŒãžã§ã³ã®å ±æã³ã³ããŒãã³ããååŸããå¿ èŠãããå Žåã¯ãçºè¡è ããªã·ãŒ ãã¡ã€ã«ã䜿çšãããŸãã çºè¡å ããªã·ãŒ ãã¡ã€ã«ã®èšå®ã¯ãã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ãã»ãŒã ã¢ãŒããé©çšããªãéããã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã®èšå®ããªãŒããŒã©ã€ãããŸãã
ã»ãŒãã¢ãŒã
éåžžããããªãã·ã£ãŒ ããªã·ãŒ ãã¡ã€ã«ã¯ãService Pack ãŸãã¯ããã°ã©ã ã®æŽæ°ããã°ã©ã ã®äžéšãšããŠæç€ºçã«ã€ã³ã¹ããŒã«ãããŸãã ã¢ããã°ã¬ãŒããããå ±æã³ã³ããŒãã³ãã«åé¡ãããå Žåã¯ãå®å šã¢ãŒãã䜿çšããŠãããªãã·ã£ãŒ ããªã·ãŒ ãã¡ã€ã«ã®ãªãŒããŒã©ã€ããç¡èŠã§ããŸãã ã»ãŒã ã¢ãŒãã¯ãã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã«ã®ã¿ååšãã <publisherPolicy apply="yes|no"/> èŠçŽ ã«ãã£ãŠæ±ºãŸããŸãã ãã€ã³ã ããã»ã¹ãããããªãã·ã£ãŒ ããªã·ãŒæ§ææ å ±ãåé€ãããã©ãããæå®ããŸãã
ã»ãŒã ã¢ãŒãã¯ãã¢ããªã±ãŒã·ã§ã³å šäœãŸãã¯éžæããã¢ã»ã³ããªã«å¯ŸããŠèšå®ã§ããŸãã ã€ãŸããã¢ããªã±ãŒã·ã§ã³ãæ§æãããã¹ãŠã®ã¢ã»ã³ããªã®ããªã·ãŒããªãã«ããããäžéšã®ã¢ã»ã³ããªã§ã¯æå¹ã«ã§ããŸãããä»ã®ã¢ã»ã³ããªã§ã¯æå¹ã«ããããšã¯ã§ããŸããã ã¢ããªã±ãŒã·ã§ã³ãæ§æããã¢ã»ã³ããªã«ãããªãã·ã£ãŒ ããªã·ãŒãéžæçã«é©çšããã«ã¯ã <publisherPolicy apply=no/> ãèšå®ãã <dependentAssembly> èŠçŽ ã䜿çšããŠåœ±é¿ãåããã¢ã»ã³ããªãæå®ããŸãã ã¢ããªã±ãŒã·ã§ã³ãæ§æãããã¹ãŠã®ã¢ã»ã³ããªã«çºè¡å ããªã·ãŒãé©çšããã«ã¯ã<publisherPolicy apply=no/> ãèšå®ããäŸåã¢ã»ã³ããªèŠçŽ ãèšå®ããªãããã«ããŸãã æ§æã®è©³çްã«ã€ããŠã¯ããæ§æ ãã¡ã€ã«ã䜿çšããã¢ããªã®æ§æããåç §ããŠãã ããã
ãã·ã³æ§æãã¡ã€ã«
3 çªç®ã«ãã©ã³ã¿ã€ã ã¯ãã·ã³æ§æãã¡ã€ã«ã調ã¹ãŸãã Machine.configãšåŒã°ãããã®ãã¡ã€ã«ã¯ãã©ã³ã¿ã€ã ãã€ã³ã¹ããŒã«ãããŠããã«ãŒã ãã£ã¬ã¯ããªã® Config ãµããã£ã¬ã¯ããªå ã®ããŒã«ã« ã³ã³ãã¥ãŒã¿ãŒã«ååšããŸãã ãã®ãã¡ã€ã«ã¯ã管çè ãããã®ã³ã³ãã¥ãŒã¿ãŒã«å¯ŸããŠããŒã«ã«ãªã¢ã»ã³ã㪠ãã€ã³ãå¶éãæå®ããããã«äœ¿çšã§ããŸãã ãã·ã³æ§æãã¡ã€ã«ã®èšå®ã¯ãä»ã®ãã¹ãŠã®æ§æèšå®ãããåªå ãããŸãããã ããããã¯ããã¹ãŠã®æ§æèšå®ããã®ãã¡ã€ã«ã«é 眮ããå¿ èŠãããããšãæå³ããããã§ã¯ãããŸããã 管çè ããªã·ãŒ ãã¡ã€ã«ã«ãã£ãŠæ±ºå®ãããããŒãžã§ã³ã¯æçµçã§ããããªãŒããŒã©ã€ãã§ããŸããã Machine.config ãã¡ã€ã«ã§æå®ããããªãŒããŒã©ã€ãã¯ããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«åœ±é¿ããŸãã æ§æãã¡ã€ã«ã®è©³çްã«ã€ããŠã¯ããæ§æãã¡ã€ã« ã䜿çšããã¢ããªã®æ§æããåç §ããŠãã ããã
æé 2: 以åã«åç §ãããã¢ã»ã³ããªã確èªãã
èŠæ±ãããã¢ã»ã³ããªã以åã®åŒã³åºãã§ãèŠæ±ãããŠããå Žåãå ±éèšèªã©ã³ã¿ã€ã ã¯æ¢ã«èªã¿èŸŒãŸããŠããã¢ã»ã³ããªã䜿çšããŸãã ããã¯ãã¢ããªã±ãŒã·ã§ã³ãæ§æããã¢ã»ã³ããªã«ååãä»ãããšãã«åœ±é¿ãåããå¯èœæ§ããããŸãã ã¢ã»ã³ããªã®ååä»ãã®è©³çްã«ã€ããŠã¯ãã ã¢ã»ã³ããªåããåç §ããŠãã ããã
ã¢ã»ã³ããªã«å¯Ÿãã以åã®èŠæ±ã倱æããå Žåãã¢ã»ã³ããªã®åŸç¶ã®èŠæ±ã¯ãã¢ã»ã³ããªã®èªã¿èŸŒã¿ã詊ã¿ãããšãªãããã«å€±æããŸãã ã¢ã»ã³ã㪠ãã€ã³ããšã©ãŒããã£ãã·ã¥ããããã£ãã·ã¥ãããæ å ±ã䜿çšããŠã¢ã»ã³ããªã®èªã¿èŸŒã¿ã詊ã¿ããã©ããã倿ããŸãã
泚
ãã€ã³ããšã©ãŒããã£ãã·ã¥ããªãã£ã .NET Framework ããŒãžã§ã³ 1.0 ããã³ 1.1 ã®åäœã«æ»ãã«ã¯ãæ§æãã¡ã€ã«ã« <disableCachingBindingFailures> èŠçŽ ãå«ããŸãã
æé 3: ã°ããŒãã« ã¢ã»ã³ã㪠ãã£ãã·ã¥ã®ç¢ºèª
å³å¯ãªååã®ã¢ã»ã³ããªã®å Žåããã€ã³ã ããã»ã¹ã¯ã°ããŒãã« ã¢ã»ã³ã㪠ãã£ãã·ã¥ã調ã¹ãããšã§ç¶è¡ãããŸãã ã°ããŒãã« ã¢ã»ã³ã㪠ãã£ãã·ã¥ã«ã¯ãã³ã³ãã¥ãŒã¿ãŒäžã®è€æ°ã®ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšã§ããã¢ã»ã³ããªãæ ŒçŽãããŸãã ã°ããŒãã« ã¢ã»ã³ã㪠ãã£ãã·ã¥å ã®ãã¹ãŠã®ã¢ã»ã³ããªã«ã¯å³å¯ãªååãå¿ èŠã§ãã
æé 4: ã³ãŒãããŒã¹ãŸãã¯ãããŒãã䜿çšããŠã¢ã»ã³ããªãæ€çŽ¢ãã
åŒã³åºãå ã¢ã»ã³ããªã®åç §ãšæ§æãã¡ã€ã«ã®æ å ±ã䜿çšããŠé©åãªã¢ã»ã³ã㪠ããŒãžã§ã³ã決å®ãããåŸãã°ããŒãã« ã¢ã»ã³ã㪠ãã£ãã·ã¥ (å³å¯ãªååä»ãã¢ã»ã³ããªã®å Žåã®ã¿) ã§ãã§ãã¯ãããåŸãå ±éèšèªã©ã³ã¿ã€ã ã¯ã¢ã»ã³ããªã®æ€çŽ¢ã詊ã¿ãŸãã ã¢ã»ã³ããªãæ€çŽ¢ããããã»ã¹ã«ã¯ãæ¬¡ã®æé ãå«ãŸããŸãã
ã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã« <codeBase> èŠçŽ ãèŠã€ãã£ãå Žåãã©ã³ã¿ã€ã ã¯æå®ãããå Žæã確èªããŸãã äžèŽãããã®ãèŠã€ãã£ãå Žåããã®ã¢ã»ã³ããªã䜿çšããããããŒãã¯è¡ãããŸããã ã¢ã»ã³ããªãèŠã€ãããªãå Žåããã€ã³ãèŠæ±ã¯å€±æããŸãã
ã©ã³ã¿ã€ã ã¯ããã®ã»ã¯ã·ã§ã³ã§åŸè¿°ããèŠåã䜿çšããŠãåç §å ã¢ã»ã³ããªããããŒãããŸãã
泚
1 ã€ã®ãã£ã¬ã¯ããªã«è€æ°ã®ããŒãžã§ã³ã®ã¢ã»ã³ããªãããããã®ã¢ã»ã³ããªã®ç¹å®ã®ããŒãžã§ã³ãåç
§ããå Žåã¯ã<> èŠçŽ ã®privatePath屿§ã§ã¯ãªãã<> èŠçŽ ã䜿çšããå¿
èŠããããŸãã
<probing> èŠçŽ ã䜿çšããå Žåãã©ã³ã¿ã€ã ã¯ãåç
§ãããŠããåçŽãªã¢ã»ã³ããªåãšäžèŽããã¢ã»ã³ããªãåããŠèŠã€ãããšããããæ£ããäžèŽã§ãããã©ããã«é¢ä¿ãªãããããŒãã忢ããŸãã æ£ããäžèŽã§ããå Žåã¯ããã®ã¢ã»ã³ããªã䜿çšãããŸãã æ£ããäžèŽã§ã¯ãªãå ŽåããããŒãã¯åæ¢ãããã€ã³ãã¯å€±æããŸãã
Codebase ã䜿çšããã¢ã»ã³ããªã®æ€çŽ¢
ã³ãŒãããŒã¹æ å ±ã¯ãæ§æãã¡ã€ã«å ã® <codeBase> èŠçŽ ã䜿çšããŠæäŸã§ããŸãã ã©ã³ã¿ã€ã ãåç §å ã¢ã»ã³ããªã®ãããŒãã詊ã¿ãåã«ããã®ã³ãŒãããŒã¹ã¯åžžã«ãã§ãã¯ãããŸãã æçµããŒãžã§ã³ã®ãªãã€ã¬ã¯ããå«ããããªãã·ã£ãŒ ããªã·ãŒ ãã¡ã€ã«ã«ã <codeBase> èŠçŽ ãå«ãŸããŠããå Žåããã® <codeBase> èŠçŽ ã䜿çšãããŸãã ããšãã°ãã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã§ <codeBase> èŠçŽ ãæå®ããã¢ããªã±ãŒã·ã§ã³æ å ±ããªãŒããŒã©ã€ããããããªãã·ã£ãŒ ããªã·ãŒ ãã¡ã€ã«ã§ <codeBase> èŠçŽ ãæå®ããŠããå Žåããããªãã·ã£ãŒ ããªã·ãŒ ãã¡ã€ã«ã® <codeBase> èŠçŽ ã䜿çšãããŸãã
<codeBase> èŠçŽ ã§æå®ãããå Žæã«äžèŽãããã®ãèŠã€ãããªãå Žåããã€ã³ãèŠæ±ã¯å€±æãããã以äžã®æé ã¯å®è¡ãããŸããã ã©ã³ã¿ã€ã ã¯ãã¢ã»ã³ããªãåŒã³åºãå ã®ã¢ã»ã³ããªã®åºæºãšäžèŽãããšå€æããå Žåããã®ã¢ã»ã³ããªã䜿çšããŸãã æå®ããã <codeBase> èŠçŽ ã«ãã£ãŠæå®ããããã¡ã€ã«ãèªã¿èŸŒãŸãããšãã©ã³ã¿ã€ã ã¯ãååãããŒãžã§ã³ãã«ã«ãã£ãããã³å ¬éããŒãåŒã³åºãå ã®ã¢ã»ã³ããªã®åç §ãšäžèŽããããšã確èªããŸãã
泚
ã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒã ãã£ã¬ã¯ããªã®å€éšã§åç §ãããã¢ã»ã³ããªã«ã¯å³å¯ãªååãå¿ èŠã§ãããã°ããŒãã« ã¢ã»ã³ã㪠ãã£ãã·ã¥ã«ã€ã³ã¹ããŒã«ãããã<codeBase> èŠçŽ ã䜿çšããŠæå®ããå¿ èŠããããŸãã
ãããŒãã«ããã¢ã»ã³ããªã®æ€çŽ¢
ã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã« <codeBase> èŠçŽ ããªãå Žåãã©ã³ã¿ã€ã ã¯æ¬¡ã® 4 ã€ã®æ¡ä»¶ã䜿çšããŠã¢ã»ã³ããªããããŒãããŸãã
ã¢ããªã±ãŒã·ã§ã³ ããŒã¹ãããã¯ãã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããŠããã«ãŒãã®å Žæã§ãã
ã«ã«ã㣠(åç §å ã¢ã»ã³ããªã®ã«ã«ãã£å±æ§)ã
ååãåç §ãããã¢ã»ã³ããªã®ååã§ãã
privatePathèŠçŽ ã®<屿§ã¯ãã«ãŒãã®å Žæã«ãããµããã£ã¬ã¯ããªã®ãŠãŒã¶ãŒå®çŸ©ãªã¹ãã§ãã ãã®å Žæã¯ãã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ãšãããŒãžã ã³ãŒãã§ãã¢ããªã±ãŒã·ã§ã³ ãã¡ã€ã³ã® AppDomainSetup.PrivateBinPath ããããã£ã䜿çšããŠæå®ã§ããŸãã ãããŒãžã ã³ãŒãã§æå®ãããšããŸããããŒãžã ã³ãŒãprivatePathããããŒãããããã®åŸã«ã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã§æå®ããããã¹ããããŒããããŸãã
ã¢ããªã±ãŒã·ã§ã³ããŒã¹ãã£ã¬ã¯ããªãšã«ã«ãã£ãŒãã£ã¬ã¯ããªã®æ¢çŽ¢
ã©ã³ã¿ã€ã ã¯ãåžžã«ã¢ããªã±ãŒã·ã§ã³ã®ããŒã¹ (ã³ã³ãã¥ãŒã¿ãŒäžã® URL ãŸãã¯ã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒã ãã£ã¬ã¯ããª) ã§ãããŒããéå§ããŸãã åç §ãããã¢ã»ã³ããªãã¢ããªã±ãŒã·ã§ã³ ããŒã¹ã§èŠã€ããããã«ã«ãã£æ å ±ãæå®ãããŠããªãå Žåãã©ã³ã¿ã€ã ã¯ã¢ã»ã³ããªåãæã€ãµããã£ã¬ã¯ããªãæ€çŽ¢ããŸãã ãããŒãããããã£ã¬ã¯ããªã¯æ¬¡ã®ãšããã§ãã
[ã¢ããªã±ãŒã·ã§ã³ ããŒã¹] / [ã¢ã»ã³ããªå].dll
[ã¢ããªã±ãŒã·ã§ã³ ããŒã¹] / [ã¢ã»ã³ããªå] / [ã¢ã»ã³ããªå].dll
åç §ãããã¢ã»ã³ããªã«ã«ã«ãã£æ å ±ãæå®ãããŠããå Žåã¯ã次ã®ãã£ã¬ã¯ããªã®ã¿ããããŒããããŸãã
[ã¢ããªã±ãŒã·ã§ã³ ããŒã¹] / [ã«ã«ãã£] / [ã¢ã»ã³ããªå].dll
[ã¢ããªã±ãŒã·ã§ã³ ããŒã¹] / [ã«ã«ãã£] / [ã¢ã»ã³ããªå] / [ã¢ã»ã³ããªå].dll
privatePath 屿§ã䜿çšãããããŒã
ã©ã³ã¿ã€ã ã¯ãåç
§å
ã¢ã»ã³ããªã«å¯ŸããŠæå®ãããã«ã«ã㣠ãµããã£ã¬ã¯ããªãšãµããã£ã¬ã¯ããªã«å ããŠãprivatePath èŠçŽ ã®<屿§ã䜿çšããŠæå®ããããã£ã¬ã¯ããªããããŒãããŸãã
privatePath屿§ã䜿çšããŠæå®ãããã£ã¬ã¯ããªã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒã ãã£ã¬ã¯ããªã®ãµããã£ã¬ã¯ããªã§ããå¿
èŠããããŸãã ãããŒãããããã£ã¬ã¯ããªã¯ãåç
§ãããã¢ã»ã³ããªèŠæ±ã«ã«ã«ãã£æ
å ±ãå«ãŸããŠãããã©ããã«ãã£ãŠç°ãªããŸãã
ã©ã³ã¿ã€ã ã¯ãåç §ãããŠããåçŽãªã¢ã»ã³ããªåãšäžèŽããã¢ã»ã³ããªãåããŠèŠã€ãããšããããæ£ããäžèŽã§ãããã©ããã«é¢ä¿ãªãããããŒãã忢ããŸãã æ£ããäžèŽã§ããå Žåã¯ããã®ã¢ã»ã³ããªã䜿çšãããŸãã æ£ããäžèŽã§ã¯ãªãå ŽåããããŒãã¯åæ¢ãããã€ã³ãã¯å€±æããŸãã
ã«ã«ãã£ãå«ãŸããŠããå Žåã¯ã次ã®ãã£ã¬ã¯ããªããã§ãã¯ãããŸãã
[ã¢ããªã±ãŒã·ã§ã³ ããŒã¹] / [binpath] / [culture] / [ã¢ã»ã³ããªå].dll
[ã¢ããªã±ãŒã·ã§ã³ ããŒã¹] / [binpath] / [culture] / [ã¢ã»ã³ããªå] / [ã¢ã»ã³ããªå].dll
ã«ã«ãã£æ å ±ãå«ãŸããŠããªãå Žåã¯ã次ã®ãã£ã¬ã¯ããªããããŒããããŸãã
[ã¢ããªã±ãŒã·ã§ã³ ããŒã¹] / [binpath] / [ã¢ã»ã³ããªå].dll
[ã¢ããªã±ãŒã·ã§ã³ ããŒã¹] / [binpath] / [ã¢ã»ã³ããªå] / [ã¢ã»ã³ããªå].dll
ãããŒãã®äŸ
æ¬¡ã®æ å ±ãæå®ãããŠããŸãã
åç §ãããã¢ã»ã³ããªå: myAssembly
ã¢ããªã±ãŒã·ã§ã³ ã«ãŒã ãã£ã¬ã¯ããª:
http://www.code.microsoft.comæ§æãã¡ã€ã«ã®<probing>èŠçŽ ã¯ãbin ãæå®ããŸãã
æå: ãã€ãèª
ã©ã³ã¿ã€ã ã¯ã次㮠URL ããããŒãããŸãã
http://www.code.microsoft.com/de/myAssembly.dllhttp://www.code.microsoft.com/de/myAssembly/myAssembly.dllhttp://www.code.microsoft.com/bin/de/myAssembly.dllhttp://www.code.microsoft.com/bin/de/myAssembly/myAssembly.dll
åãååã®è€æ°ã®ã¢ã»ã³ããª
次ã®äŸã¯ãåãååã§è€æ°ã®ã¢ã»ã³ããªãæ§æããæ¹æ³ã瀺ããŠããŸãã
<dependentAssembly>
<assemblyIdentity name="Server" publicKeyToken="c0305c36380ba429" />
<codeBase version="1.0.0.0" href="v1/Server.dll" />
<codeBase version="2.0.0.0" href="v2/Server.dll" />
</dependentAssembly>
ãããŒãããããã®ä»ã®å Žæ
ã¢ã»ã³ããªã®å Žæã¯ãçŸåšã®ãã€ã³ãã£ã³ã° ã³ã³ããã¹ãã䜿çšããŠæ±ºå®ããããšãã§ããŸãã ããã¯ãã»ãšãã©ã®å Žåã Assembly.LoadFrom ã¡ãœããã䜿çšãããCOM çžäºéçšã·ããªãªã§çºçããŸãã ã¢ã»ã³ããªã LoadFrom ã¡ãœããã䜿çšããŠå¥ã®ã¢ã»ã³ããªãåç §ããå ŽåãåŒã³åºãå ã®ã¢ã»ã³ããªã®å Žæã¯ãåç §å ã¢ã»ã³ããªãæ€çŽ¢ããå Žæã«é¢ãããã³ããšèŠãªãããŸãã äžèŽãèŠã€ãã£ãå Žåããã®ã¢ã»ã³ããªãèªã¿èŸŒãŸããŸãã äžèŽãããã®ãèŠã€ãããªãå Žåãã©ã³ã¿ã€ã ã¯æ€çŽ¢ã»ãã³ãã£ã¯ã¹ãç¶è¡ããWindows ã€ã³ã¹ããŒã©ãŒã«ã¯ãšãªãå®è¡ããŠã¢ã»ã³ããªãæäŸããŸãã ãã€ã³ãèŠæ±ãšäžèŽããã¢ã»ã³ããªãæäŸãããªãå Žåã¯ãäŸå€ãã¹ããŒãããŸãã ãã®äŸå€ã¯ãåãåç §ãããå Žåã¯ãããŒãžã ã³ãŒãã® TypeLoadException ãèªã¿èŸŒãŸããŠããã¢ã»ã³ããªãèŠã€ãããªãã£ãå Žå㯠FileNotFoundException ã§ãã
ããšãã°ãAssembly1 åç
§ Assembly2 ãš Assembly1 ã http://www.code.microsoft.com/utilsããããŠã³ããŒããããå Žåããã®å Žæã¯ãAssembly2.dllãæ€çŽ¢ããå Žæã«é¢ãããã³ããšèŠãªãããŸãã ãã®åŸãã©ã³ã¿ã€ã ã¯ã http://www.code.microsoft.com/utils/Assembly2.dll ããã³ http://www.code.microsoft.com/utils/Assembly2/Assembly2.dllå
ã®ã¢ã»ã³ããªããããŒãããŸãã ã©ã¡ãã®å Žæã«ã Assembly2 ãèŠã€ãããªãå Žåãã©ã³ã¿ã€ã 㯠Windows ã€ã³ã¹ããŒã©ãŒã«å¯ŸããŠã¯ãšãªãå®è¡ããŸãã