问题标签 [project-reference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
46 浏览

.net - 导致重复引用/模糊调用的引用链

我有一个引用 DevExpress 库的 MVC UI 解决方案。

我有一个单独的 dll,我将其作为助手引用,它是使用 DevExpress 库构建的,因此:

使用此设置,当我尝试运行 UI 应用程序时,我在视图编译时收到以下错误:

以下方法或属性之间的调用不明确:'DevExpress.Web.Mvc.UI.HtmlHelperExtension.DevExpress(System.Web.Mvc.HtmlHelper)' 和 'DevExpress.Web.Mvc.UI.HtmlHelperExtension.DevExpress(System.Web .Mvc.HtmlHelper)'

如果我MyFramework从 UI 项目中删除引用,则不会发生这种情况。

似乎这些 devexpress 库被引用了两次,我不知道如何解决它。在 UI 项目的引用列表中,每个 DevEx 库当然只列出一次,并且对我的框架 dll 有一个引用。

我不知道这是 DevEx 问题还是 .NET 中的一般参考问题(我的猜测是后者)。

0 投票
3 回答
4268 浏览

c# - 为什么我的项目引用指向“obj”目录中的 dll?

我正在向一个项目添加一个项目引用,该项目已经添加了一些项目引用。如果我检查现有的属性,它们都有指向其项目bin目录的路径,例如:

C:\MyProject2\bin\Debug\MyProject2.dll

但是,当添加另一个项目引用时,它会以指向其obj目录的路径结束:

C:\MyProject3\obj\Debug\MyProject3.dll

那个 dll 似乎根本不存在!(尽管这可能是因为我还无法编译整个解决方案。)

为什么一个项目引用指向 bin,另一个指向 obj?以及如何纠正?

0 投票
0 回答
773 浏览

c# - Visual Studio 自动更新程序集引用

解决方案 A 有一个构建程序集的项目,该项目由解决方案 B 中的项目引用。

解决方案 A 构建到 c:\Bob,解决方案 B 引用程序集 c:\Bob\Assembly1.dll,并构建到 C:\Kate\,将 Assembly1.dll 复制到 c:\Kate\

如果重新构建解决方案 A(而解决方案 B 在 Visual Studio 中打开),解决方案 B 中对 Assembly1.dll 的引用会暂时中断,Visual Studio 会尝试通过更新来自 c:\Bob\Assmebly1.dll 的引用来自动解决此问题, 到 c:\Kate\Assembly1.dll (现在是不正确的参考)。

可以禁用此行为吗?

这些项目不能托管在同一个解决方案中,由于项目的大小和复杂性,我必须使用程序集引用。

0 投票
1 回答
3160 浏览

c# - Visual Studio 中的项目引用突然无法在工作站上运行

我有一个包含多个参考的解决方案,但是当我今天打开 Visual Studio 时,其中一些停止工作。我得到的构建错误是:

包含“ReferenceType”类型的程序集“ReferenceName,Version=X.0.0.0,Culture=neutral,PublicKeyToken=XXXXXXXXXXXX,Retargetable=Yes”所需的参考。将一个添加到您的项目中。

我检查了受影响引用的属性,描述和本地文件路径的值变成了空白。此外,这些是 .NET 引用,但被视为 COM 引用。

我试图删除并重新添加引用,但其中一个引用收到一条 Visual Studio 错误消息,说

无法添加引用“Reference.ocx”,请确保该文件可访问并且它是有效的程序集或 COM 组件。

我遇到的另一个问题是,重新添加的引用不会以与原始引用相同的方式重新添加。他们现在在其参考名称中的文件名中包含“互操作”,而在互操作被排除之前。添加的引用可以编译,但它似乎仍然无法正常工作。

问题是,我有相同解决方案的多个版本。当我将它的早期版本和较早版本加载到 Visual Studio 中时,会出现完全相同的参考问题。但是在其他带有 Visual Studio 的机器上,加载的项目构建和编译得很好。所以这似乎是我的工作站专门发生的事情导致了我的问题。而且我还有另一个可以编译的解决方案,但由于它的引用调用出现异常而无法正常工作。

我已经搜索并尝试了与我在论坛上遇到的错误消息相关的所有建议,但均未成功。是否存在导致这些问题的参考缓存?

0 投票
1 回答
163 浏览

visual-studio - 找出在 Visual Studio 扩展中单击了哪个引用

我正在开发一个 Visual Studio 扩展,在其中我将元素添加到项目中引用的右键单击(上下文)菜单。这是通过Group用 的父级定义 a 来完成的IDM_VS_CTXT_REFERENCE

我想根据单击的引用显示隐藏菜单元素,因此我将菜单项定义为OleMenuCommand

我在实施该CommandVisible方法时遇到了麻烦。假设为了示例的缘故,如果引用的名称以 . 开头,我想显示菜单A。我该怎么做?

我觉得我被困在互操作地狱中,盲目地因任意 id、guid 和不存在/难以理解的文档而跌跌撞撞。

我已经设法挖掘出我的引用所在的项目作为引用的一个IVsProject和一些 id,但调用GetMkDocument不会返回任何内容(它适用于项目中的文件,但不适用于引用)。

我该怎么做呢?我在哪里可以找到有关如何执行此操作的文档?

0 投票
0 回答
568 浏览

c# - 添加项目引用 FROM .csproj TO .wixproj

我有一个包含多个 C# 项目和 WiX 项目的 Visual Studio 2010 解决方案。我通过项目参考指定我的构建顺序,因为我正在使用 MSBuild 来构建我的项目。使用构建顺序引用不起作用,因为它们仅在解决方案文件中起作用。

我有以下问题:我正在尝试添加一个我想在我的 WiX 项目之后构建的 C# 项目。因此,我尝试将我的 csproj 中的项目引用添加到我的 bundle wixproj。但是,我收到以下错误:

当我尝试使用 .MSI 输出添加对 wix 项目的引用时:“无法添加对 'installerproj' 的引用。程序集必须具有 'dll' 或 'exe' 扩展名才能被引用。” -> 我无法添加这些引用。

当我尝试使用 exe 输出(包)添加对 wix 项目的引用时:“从 'installeroutput.exe' 读取元数据时出现问题('尝试加载格式不正确的程序。') Intellisense在重新加载解决方案之前可能无法正常工作。” -> 重新加载没有帮助,并且构建给出了类似的错误(“致命错误 CS0009:无法打开元数据文件 'installeroutput.exe' - '试图加载格式不正确的程序。'”) .

所以我可以忍受无法添加对我的 .msi 输出 wixproj 的引用,但我希望能够将一个添加到我的包中。这可能吗?

请注意,.wixproj 之间的引用工作正常,.wixproj 到 .csproj 也可以。只是不是相反。

如果有另一种方法可以确保我的 C# 项目将在我的 wix 捆绑项目之后构建,我也可以使用它,但它必须同时从 MSBuild 命令行和 .sln 工作。

0 投票
3 回答
112 浏览

visual-studio-2015 - 项目参考v.参考——C# RuntimeBinding 的区别?

最近几天我一直在重构一个项目。该项目使用 Dapper 和 SqlMapper 功能将 Sql 查询的结果映射到对象上。作为我重构的一部分,我将一些对象移动到一个单独的程序集中,这就是事情变得有点不对劲的地方。

这不断抛出一个 RuntimeBinder 异常,说 'QueryAsync<>' 不是 SqlMapper 的成员。这是已经运行了六个月以上的代码。

我终于找到了问题所在,我很感激其他人的一些想法。“解决方案”是用浏览引用替换对包含“HL7Control”的程序集的项目引用(即;在项目文件中<Project Reference Include...><Reference Include...>

该解决方案由 vs2015 构建,并以 .NET4.6 为目标,但以 .NET4.0 为目标的新程序集除外。

欢迎任何想法,因为当我不理解“修复”时我会不高兴。

谢谢。

更新 1. 更多信息。我忽略了 agentList 不仅名字不好,而且实际上是一个类:

正是因为 Param 是动态的,才涉及到 RuntimeBinder。现在我知道动态不会跨越程序集边界,这是我在重构期间必须解决的其他问题。但是在这种情况下,尽管 DapperStatement在不同的程序集中定义的,但对象实例并未穿过程序集边界。DapperStatement 总是在另一个程序集中使用它。

另请注意, SqlMapper.Query<> 始终有效,因此显然异步是其中的一个因素。

我还一夜之间重新启动了我的机器并从头开始重建,但问题仍然存在。

哦,将新程序集更改为 .NET4.6 不会改变任何东西(除了破坏正在为其开发的外部客户端项目,哈哈)。

更新 2. 问题似乎特定于 Dapper。进一步解释需要更多细节,所以这里是:最初我们有一个包含多个项目的解决方案。其中一个项目(项目 A)使用 Dapper 来访问和操作一些 SQL 表。然后其他几个项目依赖于此。

同时,另一个外部项目需要访问相同的表,但使用的是 DevExpress XPO。所以我这周一直在做的是移动一些东西,以便 XPO 不再访问这些表。原始的 Dapper 代码做了更多的工作,所以我们决定只删除外部项目需要的东西。这给我们留下了两个使用 Dapper 来操作 SQL 数据库的程序集。看起来我看到的问题是,在那种情况下,有一个项目参考而不是浏览参考会把事情搞砸。

今天早上,我从新项目中删除了 Dapper 引用,突然旧代码再次与浏览器引用一起工作(只要避免我不得不破解的调用)。

0 投票
0 回答
71 浏览

visual-studio - 在构建之前添加对项目的引用

我需要在 Visual Studio 2015 中的构建过程开始之前添加一些对另一个项目或 dll 的引用,然后我需要在构建之后删除引用。

有可能吗?最好的方法是什么?我还可以添加共享项目吗?

0 投票
1 回答
1151 浏览

c# - 在解决方案结构中引用共享项目

我正在尝试解决在几个类库中引用共享项目的问题。

内部解决方案项目之间的引用是:

  • 类库 A -> SharedProject
  • 类库 B -> SharedProject
  • 类库 C -> SharedProject
  • 类库 C -> 类库 A
  • 类库 C -> 类库 B

在共享项目中,我只有一个要共享的具有逻辑的类,因此在每个类库项目中,我都使用共享项目中的相同类。但是在构建之后,我在类库 C 中得到以下错误:

类库 A 和类库 B 中都存在“同一类”类型

有没有办法使这项工作,或者我应该用经典类库替换共享项目?

0 投票
2 回答
237 浏览

visual-studio-2015 - 将服务结构项目引用添加到单元测试会生成意外的引用路径

每次我们尝试向刚刚创建的单元测试项目中添加对服务结构 Web Api 项目的引用时,都会遇到以下问题:

C:\TFS\Finance\Payments.Card\Int\Source\Finance.Payments.Card.ServiceFabric.Web.Api\ obj\x64 \Release\Asos.Finance.Payments.Card.ServiceFabric.Web.Api.exe

粗体部分是问题所在。我们不确定为什么默认情况下会发生这种情况,因为它会导致我们的 CI 管道出现问题。

如果我们删除 obj 文件夹,重新添加引用后它仍然指向它。它不指向存在并包含所有相关程序集的 bin 文件夹