2008-09-16 4 views
5

저는 Microsoft.SqlServer.Smo 어셈블리를 참조하는 작은 응용 프로그램을 가지고 있습니다 (그래서 사용자가 연결할 수있는 서버 목록 &의 목록을 사용자에게 표시 할 수 있습니다).Microsoft.SqlServer.Smo를 참조하는 응용 프로그램은 추가 어셈블리가 대상 컴퓨터에 포함되어야합니까?

내 응용 프로그램은 원래 Microsoft.SqlServer.Smo 및 Microsoft.SqlServer.ConnectionInfo를 참조했습니다. 상황은 내 dev에 상자에 예상대로 일했습니다.

테스트 컴퓨터에 응용 프로그램을 설치하면 System.IO.FileNotFoundException이 수신되었습니다. 메시지의 세부 사항은 포함 된 다음

    : 내가 결국 위에서 언급 한 것 외에 다음 어셈블리를 참조하여 문제를 해결 파일이나 어셈블리 Microsoft.SqlServer.SmoEnum

    를로드 할 수 없습니다

  • Microsoft.SqlServer.SmoEnum
  • Microsoft.SqlServer.SqlEnum
  • Microsoft.SqlServer.BatchParser
  • Microsoft.SqlServer.Replication

누구나 참조없이 내 개발 상자에서 응용 프로그램을 잘 만들지 만 실제로이 추가 어셈블리를 모두 내 응용 프로그램에 포함시켜야 (사용자 컴퓨터에 설치할 수 있음) 확인할 수 있습니까?

+0

이 질문에 감사드립니다. 나는 그것에 대해 많은 것을 배웠습니다! – StevenMcD

답변

2

예, 포함시켜야합니다. 개발 컴퓨터에는 SQL Server가 설치되어있어 해당 어셈블리를 전역 어셈블리 캐시에 배치합니다. 빌드 할 때마다 Visual Studio는 GAC에서 가져옵니다. 또한 배포 될 컴퓨터의 GAC에도 해당 파일이 있다고 가정합니다. 그렇지 않은 경우 FileNotFound 예외가 발생합니다.

0

은 실행시 외부 어셈블리에 대한 JIT 링크 때문에,이 질문은 당신의 코드를 분석하고

당신이 원하는 경우 등, 이러한 호출 부르는, 전화 차례로 무엇을 보지 않고 대답 할 수 없다 이것을 직접 분석하면, 필요한 어셈블리 만 참조하고 예외 및 내부 예외에서 어떤 일이 일어 났는지를 배우는 것이 가장 좋습니다.

네가 조사해야 할 또 다른 사항은 네 개의 어셈블리가 GAC에없는 이유입니다. 그들이해야하는 것처럼 확실히 보인다.

0

나를 위해이 답변은 사실이 아닙니다. 위의 참조를 추가했지만 해결 방법은 없습니다.

Microsoft.SqlServer.Smo

... 다음과 같은 해상도 : 궁극적으로 내가에만 참조 필요한 것을 발견

I get a "An attempt was made to load a program with an incorrect format" error on a SQL Server replication project

은, 요약하면 내 IIS를 사용하는 데 필요한 6 IIS 응용 프로그램 풀에서 32 비트 응용 프로그램을 사용하도록 설정합니다. 이것은 Windows 7 x64이지만 SQL x86을 설치했기 때문입니다. 오류 메시지가 너무 특별하지 않을 수 있습니다.

+0

후속 조치 ... 테스트 웹 서버에 배포 할 때 위의 오류가 발생했습니다. 나는 의아해했고 GAC에서 보았고 위에서 언급 한 모든 dll을 발견했다. 그러나, 내 웹 응용 프로그램의 bin 디렉터리에, 나는 오직 : Microsoft.SqlServer.BatchParser Microsoft.SqlServer.Replication ... 그래서 그들을 제거하고 모든 것이 효과가 나타났습니다. 나는 종속 파일의 일부분이 .net에서 GAC가 아닌 빈에 파일의 일부분을로드하도록 만들었다 고 생각합니다. 따라서 이러한 상호 운용성을 배포하지 않는 것이 가장 좋습니다. – ebol2000

4

당신은 즉, 대상 컴퓨터에 두 MSI 파일을 설치해야합니다 : -

2) SharedManagementObjects.msi

1) SQLSysClrTypes.msi을 [> SMO GAC이 하나가 C# 필요합니다]

SQL Server 2014의 경우 here을 다운로드 할 수 있습니다.

또한 버전이 올바른지 확인해야합니다. 이 두 파일은 약간의 인터넷 검색으로 찾을 수 있습니다. 이렇게하면 로컬 &에 아무 것도 복사하지 않고 GAC에서 해결됩니다.

저는 이것이 오래된 질문이지만 답변이 만족스럽지 않다는 것을 알고 있습니다.

관련 문제