【问题标题】:Add project's reference to another project in same solution dynamically动态添加项目对同一解决方案中另一个项目的引用
【发布时间】:2014-04-14 19:35:50
【问题描述】:

我有一个解决方案和三个项目,它们都是动态创建的。现在我必须将第一个项目的引用添加到第二个和第三个项目。当我尝试逻辑时,我能够单独构建项目,而在构建解决方案时,它会抛出"Reference could not be loaded properly" 错误。当使用theVSProject.References.Add() 方法直接添加.dll 时会发生这种情况。

所以我尝试使用以下代码作为上述问题的解决方案。但我仍然遇到了一些错误。

Imports VSLangProj
' Add the second project as a reference to the first project.
Sub AddProjectExample()
   ' First project is a Visual Basic or C# project.
   Dim theVSProject As VSProject = _
      CType(DTE.Solution.Projects.Item(1).Object, VSProject)

   ' Second project is any type of project.
   Dim secondProject As Project = DTE.Solution.Projects.Item(2)

   ' AddProject returns the newly created Reference object.
   Dim newReference As Reference
   newReference = theVSProject.References.AddProject(secondProject)
End Sub

错误是,

The referenced assembly 'EnvDTE, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' could not be found. 

有什么解决办法吗?

我们无权使用VS IDE 文件夹来应用以下修复。

注意:也试过下面的解决方案App.Config,但还是有问题。

msdn

【问题讨论】:

  • 您能以编程方式修改项目文件吗?
  • 我想知道您是否可以将另一个 元素添加到项目文件的相应 元素中。您可以包含已编译 .dll 的路径、项目 GUID 及其名称。 {[projectGuid]}[projectName]
  • @Bone:先阅读问题。
  • @NWard:我使用 ENVDTE、VSProject 和参考进行了编码。有什么想法可以让上面的代码工作吗?
  • 我不确定,我对 EnvDTE 没有任何经验。我只是在猜测是否有不涉及 EnvDTE 的问题的另一种解决方案。您能告诉我们更多关于您要解决的问题吗?

标签: .net vb.net dynamic envdte


【解决方案1】:

NWard 是绝对正确的。不确定您尝试用于添加引用的代码,但可以通过编程方式编辑项目根目录中的 csproj 文件,以在其正确位置添加以下内容:

<ItemGroup>
    <ProjectReference Include="..\MyOtherProj\MyOtherProj.csproj">
      <Project>{abda85bb-2019-4b80-982e-b90add3fcca0}</Project>
      <Name>MyOtherProj</Name>
    </ProjectReference>
  </ItemGroup>

调用内部调用的 powershell 脚本或一些控制台 exe。 希望这会有所帮助!

【讨论】:

  • 我已经使用 XML 处理了 .csproj 文件。但我需要知道是否可以在不使用 .csproj 文件的情况下添加它。
  • 虽然问题中没有提到这一点,但事实上,Visual Studio 将项目引用存储在 csproj 文件 (AFAIK) 中。看看此链接是否可以帮助您获得相关见解:whathecode.wordpress.com/2012/10/07/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
相关资源
最近更新 更多