【问题标题】:How do I add interop assembly that changes its version number?如何添加更改其版本号的互操作程序集?
【发布时间】:2010-12-20 12:12:25
【问题描述】:

我的 C# 程序通过互操作程序集使用 COM 组件。 COM 组件有时会发生变化(在接口末尾添加方法)。 I need to build this program in an automated build and have the interop assembly incrementing its version number - 这可以通过使用 tlbimp 作为预构建步骤来实现。

问题在于项目文件中的引用设置为某个特定版本(例如 4.0.0.34) - 添加引用时互操作程序集所具有的版本。一旦通过自动构建增加数字并完成预构建步骤,项目文件中存储的版本号不再与程序集属性中的数字匹配,我得到

警告 MSB3245:无法解析此引用。找不到程序集“Interop.MyCOMComponent,Culture=neutral,Version=4.0.0.34,processorArchitecture=MSIL”。检查以确保该程序集存在于磁盘上。如果您的代码需要此引用,则可能会出现编译错误。

然后

找不到类型或命名空间名称“MyCOMComponent”(您是否缺少 using 指令或程序集引用?)

我能否以某种方式告诉 Visual Studio,我不想将确切的程序集版本存储在项目文件中,它应该使用它在编译时看到的任何版本?

【问题讨论】:

  • 先关闭你的旧问题。

标签: c# .net visual-studio-2008 versioning


【解决方案1】:

我相信在 .csproj 文件中,您会在 Reference 元素中找到一个名为 SpecificVersion 的属性。

删除此属性可能会产生您想要的效果。

【讨论】:

    【解决方案2】:

    对我有用的是删除“COM”引用并将该引用添加到互操作程序集,就好像它是一个普通的“.NET”引用一样。由于后者不存储版本号,所以问题一劳永逸地解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 2016-02-10
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多