我正在尝试通过添加以下内容来设置我的 csproj 文件以在父目录中搜索依赖项:
<PropertyGroup>
<AssemblySearchPaths>
..\Dependencies\VS2012TestAssemblies\; $(AssemblySearchPaths)
</AssemblySearchPaths>
</PropertyGroup>
我在第一个包含所有引用声明的 ItemGroup 之前添加了它作为最后一个 PropertyGroup 元素。
不幸的是,这导致所有其他引用无法解析,例如:
ResolveAssemblyReferences:
Primary reference "Microsoft.CSharp".
9>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1578,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.CSharp". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
For SearchPath "..\Dependencies\VS2012TestAssemblies\".
Considered "..\Dependencies\VS2012TestAssemblies\Microsoft.CSharp.winmd", but it didn't exist.
Considered "..\Dependencies\VS2012TestAssemblies\Microsoft.CSharp.dll", but it didn't exist.
Considered "..\Dependencies\VS2012TestAssemblies\Microsoft.CSharp.exe", but it didn't exist.
有没有一种简单的方法可以告诉 msbuild 到哪里搜索我的项目的依赖项?我意识到我可以使用/p:ReferencePath,但是我更喜欢在 csproj 文件本身中有编译逻辑,而不是让 TFS Team Builds 决定在哪里查看,更不用说我希望它能够在其他文件上编译开发者机器。
我确实尝试将 $(AssemblySearchPaths) 移到列表中的第一位,但这没有帮助。
最佳答案
您能否更改目标“BeforeResolveReferences”中“AssemblySearchPaths”属性的值,看看是否能解决您的问题?
<Target Name="BeforeResolveReferences">
<CreateProperty
Value="..\Dependencies\VS2012TestAssemblies;$(AssemblySearchPaths)">
<Output TaskParameter="Value"
PropertyName="AssemblySearchPaths" />
</CreateProperty>
</Target>
关于msbuild - 在 csproj 文件中使用 AssemblySearchPaths,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19309880/