我想使用SharpDX库,我必须自己编译源代码。 我可以使用Net40配置轻松地从他们的GitHub编译最新的源代码。 现在我想在我自己的项目中使用已编译的项目,我发现以下内容: https://github.com/sharpdx/SharpDX/issues/379
这导致我做了以下步骤:
使用以下内容创建文件“./MyProject/Common.targets”:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- set the location of SharpDX source code -->
<SharpDXLocation Condition="'$(SharpDXLocation)' == ''">..\SharpDX</SharpDXLocation>
<!-- the new property to include references automatically (as it was in old SharpDX.targets) -->
<SharpDXIncludeReferences>true</SharpDXIncludeReferences>
<!-- (optional) override DirectX version -->
<SharpDXDirectXVersion>DirectX11</SharpDXDirectXVersion>
<!-- disable usage of signed assemblies, as you won't have the needed private key to build them -->
<SharpDXNoSigned>true</SharpDXNoSigned>
</PropertyGroup>
<Import Project="$(SharpDXLocation)\Build\SharpDX.targets" />
<Import Project="$(SharpDXLocation)\Build\SharpDX.Toolkit.targets" />
</Project>
使用以下内容创建文件“./MyProject/SharpDXHelper.csproj”:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="BuildTarget">
<Import Project="Common.targets" />
<Target Name="BuildTarget">
<Message Text="Building command for SharpDXHelper" Importance="high" />
</Target>
<Target Name="Rebuild">
<Message Text="Rebuilding command for SharpDXHelper" Importance="high" />
</Target>
<Target Name="Clean">
<Message Text="Cleaning command for SharpDXHelper" Importance="high" />
</Target>
</Project>
如果我展开“./MyProject/SharpDXHelper.csproj”的“引用”部分,我会看到所有必需的引用带有警告图标,警告如下:
警告13找不到引用的组件'SharpDX'。 SharpDXHelper
我不明白我做错了什么,为什么找不到正确的组件? 我意识到“工具包”部分已经消失,我希望那些加载失败,但我不希望其他人失败。
根据我的理解,如果我将“SharpDXHelper.csproj”添加为任何其他项目的依赖项,我应该可以使用SharpDX库而不会出现问题,我对此是否正确?
可以在此处找到由此产生的问题的图像: http://puu.sh/dfmP4/c6ac1165ed.png
答案 0 :(得分:0)
根据我的理解,如果我添加&#34; SharpDXHelper.csproj&#34;我应该可以毫无问题地使用SharpDX库。作为对任何其他项目的依赖,我对此是否正确?
不是。
引用的项目不会被评估为导入项目(使用“导入”任务)。
这就是为什么我们使用&#34; .targets&#34;导入项目的扩展,以区别于引用的项目。
虽然有可能开发出这样一个引用的项目B1,它可以被复制到本地&#34;在编译A1时由A1编写,但这需要深入研究.NET / C#引用项目如何进行交叉编译以实现此目的。这是可行的,但要发展是一个相当大的挑战。
我建议您坚持使用导入解决方案。