2017-06-02 10 views
0

私はC#を初めて使用しているので、正しい質問をしていない可能性があります。私と一緒に抱きしめてください。MSBuildがGAC以外の参照を解決しない

私は解決策を持っており、そのソリューション内にはSSISパッケージをリモートで実行しているプロジェクトがあります。いくつかの調査の後、私はGAC(General Assembly Catalog?)の「外」にあるDLLへの参照を作成する必要があることを発見しました。次のアセンブリを参照された:

C:\ WINDOWS \アセンブリ\ GAC_MSIL \ Microsoft.SqlServer.Management.IntegrationServices \ 11.0.0.0__89845dcd8080cc91 \ Microsoft.SqlServer.Management.IntegrationServices.dll

C:\プログラムファイル(x86)\ Microsoft SQL Server \ 110 \ SDK \ Assemblies \ Microsoft.SqlServer.Management.Sdk.Sfc.dll

C:\ Program Files(x86)\ Microsoft SQL Server \ 110 \ SDK \ Assemblies \ Microsoft.SqlServer.Smo.dll

Visual Studio 2015からソリューションをクリーンアップしてビルドすると、すべてがうまくいきます。しかし、ソリューションのMSBuildをデプロイメントスクリプトから呼び出すと、参照が存在しないという多くのエラーが発生します。例えば、ここではそれらのいずれかのエラーです:

"C:\ TestModule \ SSISTests \ SSISTests.csproj"(デフォルトターゲット)(10) - >(CoreCompileターゲット) - > SSISTests.cs(78,17 ):エラーCS0012:タイプ 'Microsoft.SqlServer.Management.Common.ISfcConnection'は、 が参照されていないアセンブリで定義されています。アセンブリ 'Microsoft.SqlServer.ConnectionInfo、Version = 11.0.0.0、Culture = neutral、PublicKeyToken = 89845dcd8080cc91'への参照を追加する必要があります。 [C:\ TestModule \ SSISTests \ SSISTests.csproj]

この問題を解決するにはMSBuildに渡していませんか?これは依存関係の問題ではありません(私は思っていません)。このプロジェクトでは他のプロジェクトは必要ありません。これらのSQL Serverアセンブリだけです。

+0

マイケルが示唆するように、ソリューションではなくSSISTest.csprojプロジェクトを作成するだけの方法はありますか?そして、そのプロジェクトに「Microsoft.SqlServer.Management.Common.ISfcConnection」参照を追加しようとしましたか? –

+0

私の元の投稿に記載されているように参考文献があります。私は何が起こるかを見るためにMSビルドのプロジェクトファイルを構築しなければならないでしょう – Matt1776

+0

レオ - 今何を意味しているのか分かります。何かの理由でSDKが他のDLLを参照していました。私がMSビルドと呼んだときにはVSでした。 – Matt1776

答えて

0

csprojファイルを開き、そのDLLが正しく参照されているかどうかを確認してください。また、MSBuildをslspではなくcsprojに対してのみ実行できるかどうかを確認してください。パスの問題かもしれません。

+0

私はあなたが正しいかもしれないと思う - 「HintPath」要素と呼ばれる何かを持ち、相対パスを使用しているこれらの参照のうち2つがcsprojファイルにあります。これをプログラム的に修正するにはどうすればよいですか? 例:\ .. \ .. \ .. \ .. \ .. \ Program Files(x86)\ Microsoft SQL Server \ 110 \ SDK \ Assemblies \ Microsoft.SqlServer.Smo.dll – Matt1776

+0

また、 Debugビルドの代わりにReleaseビルドを実行すると、DLLはコピーされず、すべてがクリーンです。しかし、これは別のシステムでは実行できないことを意味しますか?私は他のシステムでそれを実行する必要があるリリースフォルダに含まれているすべてをしたい – Matt1776

+0

DLLへのパスを手動で編集して保存してから、MSBuildをcsprojに対して実行して何が起こるか教えてください。ヒントの相対パスを使用します。 –

関連する問題