使用源码编译的SharpDX?

时间:2014-12-03 14:02:08

标签: c# visual-studio dependencies sharpdx targets

我想使用SharpDX库,我必须自己编译源代码。 我可以使用Net40配置轻松地从他们的GitHub编译最新的源代码。 现在我想在我自己的项目中使用已编译的项目,我发现以下内容: https://github.com/sharpdx/SharpDX/issues/379

这导致我做了以下步骤:

  • 将SharpDX源代码下载并解压缩为“./SharpDX”
  • 打开文件“./SharpDX/SharpDX.sln”
  • 在配置管理器中使用配置Net40构建SharpDX源代码
  • 使用以下内容创建文件“./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>
    
  • 使用Visual Studio打开文件“./MyProject/SharpDXHelper.csproj”。

如果我展开“./MyProject/SharpDXHelper.csproj”的“引用”部分,我会看到所有必需的引用带有警告图标,警告如下:

  

警告13找不到引用的组件'SharpDX'。 SharpDXHelper

我不明白我做错了什么,为什么找不到正确的组件? 我意识到“工具包”部分已经消失,我希望那些加载失败,但我不希望其他人失败。

根据我的理解,如果我将“SharpDXHelper.csproj”添加为任何其他项目的依赖项,我应该可以使用SharpDX库而不会出现问题,我对此是否正确?

可以在此处找到由此产生的问题的图像: http://puu.sh/dfmP4/c6ac1165ed.png

1 个答案:

答案 0 :(得分:0)

  

根据我的理解,如果我添加&#34; SharpDXHelper.csproj&#34;我应该可以毫无问题地使用SharpDX库。作为对任何其他项目的依赖,我对此是否正确?

不是。

引用的项目不会被评估为导入项目(使用“导入”任务)。

  • 从项目A1引用项目B1 :项目B1被视为可分离和可编译的项目。 B1定义的所有属性和目标在A1中都不可见。
  • 将项目B1导入A1 就像将项目B1内联到A1中一样。 B1中定义的所有属性和目标在A1中都是可见的(并覆盖在包含点之前定义的所有内容)

这就是为什么我们使用&#34; .targets&#34;导入项目的扩展,以区别于引用的项目。

虽然有可能开发出这样一个引用的项目B1,它可以被复制到本地&#34;在编译A1时由A1编写,但这需要深入研究.NET / C#引用项目如何进行交叉编译以实现此目的。这是可行的,但要发展是一个相当大的挑战。

我建议您坚持使用导入解决方案。