C# 创建对特定RID的另一个项目的NET Core项目引用

C# 创建对特定RID的另一个项目的NET Core项目引用,c#,reflection,msbuild,.net-core,project-reference,C#,Reflection,Msbuild,.net Core,Project Reference,因此,我必须说: <ProjectRefererence Target="../tool/tool.csproj"> <RID>any</RID> </ProjectReference> 任何 其中我需要特别引用由dotnet build生成的没有-r的“任意”rid。尝试引用特定的rid肯定不起作用。默认行为是为当前项目正在使用的特定rid生成依赖dll。这是行不通的。输出程序集必须能够跨体系结构移植,因为它是通过反射加载到它所源自

因此,我必须说:

<ProjectRefererence Target="../tool/tool.csproj">
    <RID>any</RID>
</ProjectReference>

任何

其中我需要特别引用由
dotnet build
生成的没有
-r
的“任意”rid。尝试引用特定的
rid
肯定不起作用。默认行为是为当前项目正在使用的特定rid生成依赖dll。这是行不通的。输出程序集必须能够跨体系结构移植,因为它是通过反射加载到它所源自的可能不同的体系结构上的。

您可以更改项目引用,以包含将覆盖项目中定义的值的全局属性(命令行或项目引用中的全局特性将替代项目文件中静态定义的特性):



这将
RuntimeIdentifier
设置为空,项目将独立生成。

Intellisense无法识别此处的Properties属性,我在ProjectReference上找到的Properties属性的唯一参考是这个答案。是的,这方面的文档很差,但msbuild及其“公共目标”的方式工作。如果您不想将任何命令行参数传递给引用的项目,那么还有一个
GlobalPropertiesToRemove
元数据项是受人尊重的,并且非常有用。代码如下:
<ItemGroup>
  <ProjectReference Include="..\ridspecificproj\ridspecificproj.csproj" Properties="RuntimeIdentifier=" />
</ItemGroup>