首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetCore命令行构建诱饵和开关的处理

NetCore命令行构建诱饵和开关的处理
EN

Stack Overflow用户
提问于 2017-11-29 16:59:57
回答 1查看 95关注 0票数 0

因此,我有一个具有以下结构的项目:

syntax: Project (Assembly Name) - P1 (Assembly-1) - P2.A (Assembly-2) - P2.B (Assembly-2) - P3 (Assembly-3)

其目的是方便诱饵和切换,其中P2.A和P2.B都有相同的组装名称。

Proj依赖是这样的,因此P3是其他所有事物的依赖。P1是一个依赖于P2.A (诱饵)的净标准项目,程序集按照预期在各自的平台上与P2.B交换。

现在在单元测试项目中,在这个解决方案中,我不依赖nuget包,而是直接依赖于项目,我有一个UnitTest项目依赖于P1、P2.B、P3。

当我在visual studio中编译这个程序集时,它的工作方式与预期的一样(即使是这个部分似乎也有风险,因为来自P2.B的程序集是最后一个传输到输出文件夹的程序集,而不是P1依赖的P2.A程序集,但不管出于什么原因,这都是可行的)。但是,如果我尝试从命令行执行一个dotnet build,它就会沿着error : Cannot find project info for '**\P2.A.csproj'. This can indicate a missing project reference.的路线失败--我猜测在项目P2.A和P2.B之间程序集的名称是相同的,这会使事情变得一团糟,不知道如何解决这个问题。

如果我只是直接从依赖于P2.B的单元测试项目中删除,那么它也可以从命令行运行,但是,我们只剩下了诱饵dll。

不知道为什么这种行为与visual studio和命令行不同。

我还试图通过移除对P2.B的直接依赖来解决这个问题,而是为AfterTargets=" build“设置一个msbuild,以触发P2.B的构建,并相应地作为单元测试项目输出文件夹提供输出路径。这种工作方式是在发生切换的地方进行的,而dotnet build/test工作得很好。但是,使用指定的运行时进行构建就会失败error : Assets file '**\P2.B\obj\project.assets.json' doesn't have a target for '.NETStandard,Version=v1.2/win10-x64',如果我在构建之后删除了针对P2.B的自定义MSBuild目标,ofc就会正常工作。

任何能解决这个问题的指针都会很有帮助。

谢谢

如果有帮助的话,我正在使用VisualStudio2017(15.4.1) dotnet (2.0.2)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-01 14:55:03

为了防止其他人遇到类似的诱饵和切换问题,第二个问题(custom target for after build but issue with building with a specified runtime then fails)得到了解决。这个错误似乎是因为缺少一个Restore目标构建触发器。

因此,为了使它发挥作用:

  • 我将“开关”库(P2.B)从单元测试项目的直接项目引用依赖项中删除
  • 将下列内容添加为自定义目标

网络核心单元测试项目.csproj

代码语言:javascript
复制
<Target Name="BaitAndSwitchTarget" AfterTargets="Build">
  <PropertyGroup>
    <LinkedProject>..\P2.B\P2.B.csproj</LinkedProject>
  </PropertyGroup>
  <MSBuild Condition="'$(LinkedProject)' != '' " Projects="$(LinkedProject)" Targets="Restore" />
  <MSBuild Condition="'$(LinkedProject)' != '' " Projects="$(LinkedProject)" Targets="Build" Properties="OutputPath=..\$(MSBuildProjectName)\$(OutputPath)" />
</Target>

这实际上是将开关目标构建为一个生成后步骤,并将其放在单元测试项目的输出文件夹中,看起来dotnet build/test/...从CLI中运行得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47557975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档