2012-08-25 2 views
0

저는 Visual Studio 2010을 사용하고 아음속을 사용하려고했는데 다음과 같은 오류가 나타납니다.아음속 컴파일 오류가 발생했습니다

오류 2 컴파일 변환 : 메타 데이터 파일 'MySql.Data'D를 찾을 수 없습니다 : \ TradingTools \ CODE \ ConsoleApplication8 \ subsoniccomponents \ Structs.tt 1 일 backtester

당신은 스크린 샷에서 볼 수 있듯이, 나는 내 참조에 mysql.data가 있어야합니다. 나는 이것을 고치는 방법을 모르겠다. 이 문제를 해결하는 데 도움을 줄 수 있습니까? http://postimage.org/image/s1es0mr79/

답변

0

SubSonic은 DbProviderFactory 패턴을 사용합니다. DbProviderFactory 접근 방식을 사용하면 구체적인 유형을 알지 못해 Connections/Commands/...를 만들 수 있습니다.

// without factory 
var con = new MySqlConnection(); 
var cmd = new MySqlCommand(); 

// with factory 
var factory = DbProviderFactories.GetFactory("MySql.Data.MySqlClient"); 
var con = factory.CreateConnection(); 
var cmd = factory.CreateCommand(); 

더 일반적인 방법입니다.

그러나이 작업을 수행하려면 machine.config 파일에 일부 항목을 만드는 MySql.Data (msi-Package)를 설치해야합니다. 말했다

,

나는 여러 종속성을 설치하지 않고 새 시스템으로 전환하기가 훨씬 쉬워집니다 설치된 소프트웨어에 의존하지 않는 내 빌드 환경을 선호합니다.

그러나 이것은 약간의 작업이 필요합니다 : 난 그냥 복사

에서 조각을 붙여

<system.data> 
    <DbProviderFactories> 
     <remove invariant="MySql.Data.MySqlClient"/> 
     <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" 
     description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.4.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </DbProviderFactories> 
    </system.data> 

<configuration> 사이 </configuration> 당신의 app.config/web.config 파일을 수정하고이 곳을 배치

%windir%\Microsoft.NET\Framework\<version>\Config 

MSI를 설치 한 후

솔루션에 여러 프로젝트가있는 경우 주 프로젝트 (서브 아닉은 런타임에 공급자를 찾을 수 있음)와 DAL 프로젝트 (코드 생성 중에 아음속은 공급자를 찾을 수 있음)에서이 작업을 수행해야합니다.

다른 MySQL 버전을 사용하는 경우이를 변경할 수 있습니다.

두 번째해야 할 일은 템플릿에 MySql.Data.dll (GAC에없는 경우)을 찾는 위치를 알려주는 것입니다.

당신은이와

<#@ include file="Settings.ttinclude" #> 
<#@ assembly name="$(SolutionDir)\Dependencies\MySql.Data.dll" #> 
<#@ import namespace="MySql.Data.MySqlClient" #> 
<#+ 

내 솔루션을 찾아 실행 템플릿 생성도 깨끗한 어떤 MySQL의 구성 요소가 설치되지 않은 설치에서 찾을 작동 변경합니다 (assembly 지침을보고)를 MySQL.ttinclude 파일을 편집하여이 작업을 수행 할 수 있습니다.