2017-06-02 14 views
0

我是C#的新手,因此可能有可能我沒有提出正確的問題。請多多包涵。MSBuild不解決指向GAC之外的引用

我有一個解決方案,在該解決方案中是遠程執行SSIS包的項目。經過一番研究後,我發現爲了做到這一點,我需要創建一些對GAC(大會目錄?)「外部」的DLL的引用。以下組件進行引用:

C:\ WINDOWS \裝配\ GAC_MSIL \ Microsoft.SqlServer.Management.IntegrationServices \ 11.0.0.0__89845dcd8080cc91 \ Microsoft.SqlServer.Management.IntegrationServices.dll

C:\ Program Files(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,版本= 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

Leo - 我明白你的意思 - 是的,由於某些原因,SDK引用了其他我沒有參考的dll,它在VS但不是當我打電話給MS Build時 - 不清楚原因。 – Matt1776

回答

0

打開您的csproj文件並檢查是否正確引用了該DLL。另外,看看你是否可以只針對csproj而不是sln運行MSBuild。可能是一個路徑問題。

+0

我想你可能是正確的 - 在csproj文件中有兩個引用有一些名爲「HintPath」的元素,它使用的是相對路徑。我怎樣才能糾正這個編程? 例如:.. \ .. \ .. \ .. \ .. \ .. \ Program Files文件(x86)\ Microsoft SQL Server \ 110 \ SDK \ Assemblies \ Microsoft.SqlServer.Smo.dll – Matt1776

+0

也當我做發佈版本而不是調試版本,這些DLL不會複製,並且所有內容都是乾淨的。但是這是否意味着這將無法在不同的系統上運行?我希望發佈文件夾中包含的所有內容都可以在任何其他系統上運行 – Matt1776

+0

您可以手動編輯DLL的路徑,保存它,然後對csproj運行MSBuild並告訴我會發生什麼情況?使用提示的相對路徑。 –

相關問題