如何引用解决方案之外的项目?

2024-05-14

我有一个 Visual Studio C# 解决方案,其中包含一些项目。其中一个项目需要引用另一个不属于解决方案的项目。

一开始我引用了dll:

<ItemGroup>
  <Reference Include="ExternalProj1, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
    <SpecificVersion>False</SpecificVersion>
    <HintPath>..\..\Proj1\ExternalProj1.dll</HintPath>
  </Reference>
</ItemGroup>

但是我必须引用项目,以便这些项目能够生成它们的 dll。事实上,如果我引用了 dll 并且它们尚未创建,我需要单独构建这些项目。

但是,在引用项目时:

<ItemGroup>
  <ProjectReference Include="..\..\Proj1\ExternalProj1">
    <Project>{3341b552-a569-4313-aabc-34452fff60ac}</Project>
    <Name>ExternalProj1</Name>
  </ProjectReference>
</ItemGroup>

但是,在构建时编译器找不到这些程序集。奇怪的是,构建过程报告为成功完成,但错误窗口报告一个警告:

找不到引用的组件ExternalProj。

那么,我做错了什么?谢谢


我看到你正在使用ProjectReference,这是我在普通(非 NET)C++ 项目中所熟悉的。 Include属性需要给文件命名,而不仅仅是基本名称;例如

<ProjectReference Include="..\..\Proj1\ExternalProj1.vcxproj">

那是,ProjectReference is not Reference. See 常见的 MSBuild 项目项 http://msdn.microsoft.com/en-us/library/bb629388%28v=vs.100%29.aspx

此外,如果没有为该项目指定元数据,则确定是否自动链接 LIB 的元数据是通过提供的 props 文件确定的。托管项目是否会生成 LIB?因此,这应该(文件名正确)导致指定项目也作为依赖项目构建,而对其产品进行某些操作则完全是另一个问题。

尝试从 MSBuild.exe 命令行(而不是 IDE)进行构建,以便在 IDE 搞乱事情或添加更多需要解决的问题之前查看纯粹的行为。并且,向其提供您想要的特定项目文件,not“解决方案”文件。 .sln 文件是一个奇怪的野兽,不仅可能有 sln 中不存在的项目引用,而且根本没有 sln 文件的固有概念。除了在 IDE 中显示的项目列表之外,它是一个动态转换为主项目的神奇文件,可让您单独命名各个目标,而无需知道哪个项目文件(或其路径)足够方便,但主要是为了与 VSBuild 兼容图书。因此要避免它,至少要简化事情,以便在探索阶段获得您想要的行为。如果您仍然需要任何复杂功能,然后重新添加它们:)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何引用解决方案之外的项目? 的相关文章

  • 如何从经过身份验证的 SecurityToken 中获取声明

    我将令牌作为字符串传递到 SOAP 服务中 并验证了该令牌是否有效 我现在有一个 SecurityToken 在调试模式下我可以看到所有声明 特别是我想传递到另一个方法的 userId 声明 我似乎不知道如何获得这些索赔 现在 我解码了令牌
  • C# 结构默认值

    我有一个方法 它接受一个包含许多具有基本数据类型的字段的结构 我想传递大部分默认值 但需要进行一些调整 但我了解结构声明中的基本字段不能包含默认值声明 例如struct S int a 42 现在是这样的 OptionsStruct opt
  • 维护 VS Test Project 中单元测试方法之间的上下文

    我想按顺序运行以下单元测试 使用随机数字的名称 密码等创建新客户 检索刚刚创建的客户并断言其属性包含相同的随机数 对同一用户调用 ForgotPassword 函数 并使用相同的随机数作为用户名 清楚地看到 我需要生成一次随机数 并在 3
  • 大量互斥体对性能的影响

    假设我有一个包含 1 000 000 个元素的数组 以及多个工作线程 每个线程都操作该数组中的数据 工作线程可能会使用新数据更新已填充的元素 但每个操作仅限于单个数组元素 并且独立于任何其他元素的值 使用单个互斥锁来保护整个数组显然会导致高
  • 从图像创建半透明光标

    是否可以从图像创建光标并使其半透明 我目前正在拍摄自定义图像并覆盖鼠标光标图像 如果我可以将其设为半透明 那就太好了 但不是必需的 销售人员喜欢闪亮的 目前正在做这样的事情 Image cursorImage customImage Get
  • 注入包含接口的所有已注册实现的 Enumerable

    给出以下接口 public interface IMyProcessor void Process 我希望能够注册多个实现 并让我的 DI 容器将它们的可枚举注入到这样的类中 public class MyProcessorLibrary
  • 托管 ODP.NET 驱动程序未显示在“数据源”对话框中

    在我的计算机上安装托管 ODP NET 后 ODP NET 托管驱动程序没有出现在里面选择数据源Visual Studio 2013 Professional 中的对话框 它应该是这样的 这就是它在我的机器上的实际外观 我已按照 轻松驱动
  • 如何在 C 中链接目标文件?失败并显示“架构 x86_64 的未定义符号”

    因此 我尝试在我的文件 file2 c 中使用另一个 C file1 c 文件中定义的函数 为了做到这一点 我包含了 file1 file1 h 的标头 但是 每当我尝试使用 gcc 编译文件时 我都会收到以下错误 Undefined sy
  • X 轴和 Z 轴上的 Quaternion.Slerp,无 Y 轴

    I am trying to rotate the Player about X Y and Z axis The Y axis should not move from last angle Example if I rotate 45
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • 如何在 C++ 中正确使用 cin.fail()

    我正在编写一个程序 从用户那里获取整数输入cin gt gt iUserSel 如果用户输入一个字母 程序就会进入无限循环 我试图用下面的代码来阻止这种情况 但程序进入无限循环并打印出 错误 输入 我该如何修复我的程序 cin gt gt
  • 更改私有模块片段是否会导致模块重新编译?

    On 此页面有关 C 20 模块功能 https www modernescpp com index php c 20 modules private module fragment and header units 我发现了这样的说法 借
  • 使用任一默认捕获模式时,这是通过复制捕获还是 (*this) 通过引用捕获?是一样的吗?

    当我看到以下工作时我有点困惑 struct A void g void f g 但后来我发现this https stackoverflow com a 16323119 5825294答案非常详细地解释了它是如何工作的 本质上 它归结为t
  • 运行实体框架自定义工具,它有什么作用?

    在 Visual Studio 中 当使用实体框架并为 tt 和 Context tt 文件应用运行自定义工具时 它是什么以及它有什么作用 为什么它解决数据库同步问题 有时 为什么我应该在运行 tt 之前运行它 Context tt 它被称
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • 在一个解决方案中调用不同项目的方法

    1 个解决方案中有 3 个项目 我对第一个项目中的主文件进行的主要操作 但是我需要调用第三个项目中的方法并使用类 例如 第三个项目有 public DataClasses1DataContext base global WindowsFor
  • Visual Studio 2015/2017 中的 TSLint?

    我的组织使用TSLint https github com palantir tslint 我们非常重视 Typescript 代码的质量检查 它为我们提供了有价值的服务 然而 我们使用 Visual Studio 2015 和 2017
  • 使用未命名命名空间而不是静态命名空间

    我可以假设在未命名命名空间中声明的对象相当于static namespace int x 1 static int x 2 FWIK 在这两种情况下 x将具有静态存储期限和内部链接 声明为的对象的所有规则也是如此static适用于未命名名称
  • 如何配置 qt Creator 以显示 C++ 代码而不是反汇编程序?

    昨天我做了很多事情 比如更新 GCC Clang 和重新安装 Qt Creator 今天 在逐步调试我的代码时 调试器显示的是反汇编代码 而不是我编写的 C 代码 紧迫F10 or F11 调试器正在进入汇编代码而不是 cpp nor h我

随机推荐