рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЪреБрдирдирд╛

рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рд░

рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, .NET рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди 32-рдмрд┐рдЯ рдФрд░ 64-рдмрд┐рдЯ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреЛрдиреЛрдВ рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЪрд▓реЗрдЧрд╛ред

рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рддрдм рддрдХ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рддрдХ рд╣рдореЗрдВ рдмрд╛рд╣рд░реА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдирд┐рд░реНрднрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╡рд╛рд▓реЗред рдпрджрд┐ рдРрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА x86 рдФрд░ x64 рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдпрд╣ рд╣рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рд┐рд░рджрд░реНрдж рд▓рд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рддрдереНрдп рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдирд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ 32-рдмрд┐рдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣рдорд╛рд░реЗ рдирд┐рдпрдореЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рд╣рдореЗрдВ рдХрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рджреЛ рдмрд╛рд░ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреИрд╕рд┐рдиреА рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗрд╡рд▓ x86 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдФрд░ ReSharper 64-рдмрд┐рдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рднреА рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рджреЛ рд╡рд┐рддрд░рдг рдЬрд╛рд░реА рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдУрд╣, рдХреНрдпрд╛ рдореБрд╢реНрдХрд┐рд▓ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЗрд╕рд▓рд┐рдП, рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдПрдХ рдЙрдЪрд┐рдд рдирд┐рд░реНрдгрдп рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдб рдХреЛ (32-рдмрд┐рдЯ рдпрд╛ 64-рдмрд┐рдЯ) рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╕реНрд╡рдпрдВ AnyCPU рдмрдиреА рд╣реБрдИ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ, рдЖрдкрдХреЛ Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ .NET рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП Oracle рдЗрдВрд╕реНрдЯреЗрдВрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ Oracle рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдирд┐рд░реНрдгрдп

рд╕рдорд╛рдзрд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ runtime/assemblyBinding рдЯреИрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред app.config рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:

 <configuration> <!--    ODP.NET    Runtime  --> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" culture="neutral" processorArchitecture="x86" /> <codeBase version="4.112.2.0" href=".\x86\Oracle.DataAccess.dll"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" culture="neutral" processorArchitecture="amd64" /> <codeBase version="4.112.2.0" href=".\x64\Oracle.DataAccess.dll"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration> 

processorArchitecture рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдЪрд╛рд░ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рди рд╣реИрдВ: x86 , amd64 , msil , ia64 ред codeBase рдореЗрдВ рдкрде рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ASP.NET рдХреЗ рд▓рд┐рдП рдпрд╣ href=".\bin\x64\Oracle.DataAccess.dll" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП href=".\bin\x64\Oracle.DataAccess.dll" )ред

рдареАрдХ рд╣реИ, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рдХреЗ рдмрд╛рдж "рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп" рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ (рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рддрд╛ рд╣реИ, рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рд╕рд╛рдЗрдЯреЛрдВ рдФрд░ рд╕рд╣реА рдорд╛рдпрдиреЗ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдпред .exe рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ) рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 

MSBuild рдХреЗ рдЕрдкрдиреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 <Import Project="$(MSBuildProjectDirectory)\..\CommonItems.targets" /> 

рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ AfterBuild рд▓рдХреНрд╖реНрдп рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реЗ рдЕрдкреВрд░реНрдг / рдЬреЛрдбрд╝рд╛ / рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
  <Target Name="AfterBuild" DependsOnTargets="CopyDataAccessFiles" > 

рдлрд╝рд╛рдЗрд▓ CommonItems.targets рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрди рд╕рд╛рдорд╛рдиреНрдп рддрддреНрд╡реЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдпрд╣рд╛рдБ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <OracleICFilesx86 Include="$(MSBuildProjectDirectory)\..\externals\OracleIC\x86\*.dll"> <Visible>False</Visible> </OracleICFilesx86> <OracleICFilesx64 Include="$(MSBuildProjectDirectory)\..\externals\OracleIC\x64\*.dll"> <Visible>False</Visible> </OracleICFilesx64> <OdpNetFilesx86 Include="$(MSBuildProjectDirectory)\..\externals\Odp.Net\x86\*.dll"> <Visible>False</Visible> </OdpNetFilesx86> <OdpNetFilesx64 Include="$(MSBuildProjectDirectory)\..\externals\Odp.Net\x64\*.dll"> <Visible>False</Visible> </OdpNetFilesx64> </ItemGroup> <Target Name="CopyDataAccessFiles" > <Copy SourceFiles="@(OracleICFilesX86);@(OdpNetFilesx86)" DestinationFolder="$(MSBuildProjectDirectory)\$(OutputPath)\x86\" SkipUnchangedFiles="true" UseHardLinkIfPossible="true" /> <Copy SourceFiles="@(OracleICFilesX64);@(OdpNetFilesx64)" DestinationFolder="$(MSBuildProjectDirectory)\$(OutputPath)\x64\" SkipUnchangedFiles="true" UseHardLinkIfPossible="true" /> </Target> </Project> 

рдкреНрд░рддрд┐рдмрдВрдз

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдзрд┐ рдХреА рд╕реАрдорд╛рдПрдБ рд╣реИрдВ:

рд╕рдВрджрд░реНрдн

<рдЕрд╕реЗрдореНрдмрд▓реА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ> рдПрд▓рд┐рдореЗрдВрдЯ рдлреЙрд░ <рд░рдирдЯрд╛рдЗрдо>

Source: https://habr.com/ru/post/In165767/


All Articles