C# 从外部.target文件指定其他引用路径
我有一系列的项目需要在一个连续的环境中进行调整 我将每个调整放在一个单独的.target文件中,以便在所有项目中重用此文件 在csproj文件的最后,我(在结束之前)放置了C# 从外部.target文件指定其他引用路径,c#,msbuild,C#,Msbuild,我有一系列的项目需要在一个连续的环境中进行调整 我将每个调整放在一个单独的.target文件中,以便在所有项目中重用此文件 在csproj文件的最后,我(在结束之前)放置了项目元素: 除非我尝试包含额外的引用路径,否则这是非常有效的 如果使用命令行指定路径(msbuild myproject.csproj/p:ReferencePath=“C:\path\to\dlls”)。该项目已完成 我的目标文件是: <Project xmlns="http://schemas.microsoft.
项目
元素:
除非我尝试包含额外的引用路径,否则这是非常有效的
如果使用命令行指定路径(msbuild myproject.csproj/p:ReferencePath=“C:\path\to\dlls”
)。该项目已完成
我的目标文件是:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- some tweaks here -->
<PropertyGroup Condition="'$(CompileFor)' == 'SP2013'">
<SomeProperty>some value</SomeProperty>
<AdditionalReferencePaths>C:\path\to\dlls</AdditionalReferencePaths>
</PropertyGroup>
</Project>
这仍然不起作用。没有错误,我可以看到目标在构建日志中被调用,但是DLL仍然没有被解析
如何修复它?
为了提供一点上下文,我在目标文件中包含的调整允许我针对不同版本的DLL编译项目。该代码是一个第三方应用程序(SharePoint)的插件,我想编译该产品的几个不同版本。使用一些条件,我可以将一个文件夹定位为一个版本的产品,也可以将另一个文件夹定位为另一个版本的产品。我在两次修复后解决了这个问题
AdditionalReferencePath
,而是ReferencePath
导入
移动到csproj的第一个项目组
之前。我想这需要在引用
元素之前设置属性您可以将项目/属性组放置在目标之外,或者放置在导入到项目文件更高位置的
.props
文件内,或者直接放置在目标顶部/外部附近的项目文件中。也就是说,AdditionalReferencePath
不在公共MSBuild属性列表中。它似乎只是团队建设的一部分(我能找到的唯一参考资料是2005-7)。您可能必须编写自己的目标,使用自己的自定义选项调用msbuild。虽然属性<代码>组件搜索路径和<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<AdditionalReferencePaths Include="C:\path\to\dlls"/>
</ItemGroup>
</Project>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="SomeTarget" BeforeTargets="BeforeBuild">
<ItemGroup>
<AdditionalReferencePaths Include="C:\path\to\dlls"/>
</ItemGroup>
</Target>
</Project>