【问题标题】:(VS Team Services) Building solution: The type or namespace name 'Office' does not exist in the namespace 'Microsoft'(VS Team Services)构建解决方案:名称空间“Microsoft”中不存在类型或名称空间名称“Office”
【发布时间】:2017-05-24 01:08:34
【问题描述】:

我们有一个应用程序可以读取 microsoft excel 文件(.xls、.xlsx、.xlsm)。

效果很好:

Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
Excel.Range range;
int rCnt;
int cCnt;
int rw = 0;
int cl = 0;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(full_filename, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
range = xlWorkSheet.UsedRange;
rw = range.Rows.Count;
cl = range.Columns.Count;
for (rCnt = 1; rCnt <= rw; rCnt++)
{
    List<object> rowList = new List<object>();
    for (cCnt = 1; cCnt <= cl; cCnt++)
    {
        // do stuff
    }
}
xlApp.Quit();
Marshal.ReleaseComObject(xlWorkSheet);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(xlApp);

问题出在 Visual Studio Team Services 中,在构建过程中导致以下错误:

命名空间中不存在类型或命名空间名称“Office” 'Microsoft'(您是否缺少程序集参考?)

我们应该在 Visual Studio 上进行哪些设置,以便 Team Services 能够构建您的应用程序?谢谢

【问题讨论】:

  • 您是否在参考文件夹或 lib 文件夹中的项目中添加了参考“Microsoft.Office.Interop”?
  • 我有这样的参考资料:using Excel = Microsoft.Office.Interop.Excel;

标签: c# tdd azure-devops


【解决方案1】:

您应该在该错误之前收到关于缺少程序集(特别是 Microsoft.Office.Interop.Excel)的警告,程序集不可用(在GAC) 到 VSTS 的托管构建代理上。

解决方案是利用此Nuget package Microsoft.Office.Interop.Excel 并在您的项目中引用该 Nuget 包提供的程序集。

然后,只要您在实际构建之前使用 Nuget Restore 构建任务,构建就可以在任何地方工作。

【讨论】:

  • 我想知道,我已经引用了'Microsoft.Office.Interop',为什么还要在Nuget中添加?没有它怎么办?
  • 因为引用需要指向一个现有文件。 Nuget 是在编译时确保所有依赖项都到位(即存在)的标准方法。当然,您不应该将 Nuget 包添加到源代码控制(例如,添加到 Git 存储库),它们应该在构建期间恢复(使用 VS,或者使用构建代理上的 VSTS)。
猜你喜欢
  • 2014-10-28
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 2018-06-14
相关资源
最近更新 更多