【问题标题】:Use SharpDX compiled from source?使用从源代码编译的 SharpDX?
【发布时间】:2014-12-03 14:02:07
【问题描述】:

我想使用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

【问题讨论】:

    标签: c# visual-studio dependencies sharpdx targets


    【解决方案1】:

    据我了解,如果我将“SharpDXHelper.csproj”添加为任何其他项目的依赖项,我应该能够毫无问题地使用 SharpDX 库,我对此是否正确?

    不是真的。

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

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

    这就是为什么我们为导入的项目使用“.targets”扩展名以将它们与引用的项目区分开来的原因。

    虽然可以开发这样一个引用的项目 B1,在编译 A1 时能够被 A1“复制到本地”,但这需要深入研究 .NET/C# 引用的项目是如何被交叉编译的为此。这是可行的,但开发起来相当困难。

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

    【讨论】:

    • 我听取了您的建议并将 添加到现有项目文件中,但与我的预期相反,它确实有效。当然没有 Toolkit API,它可能应该在某个时候更新。诚然,我添加导入的项目文件旨在与 NuGet(我取出)一起使用,因此这可能有助于解决问题。当我再次醒来时,我将看到 为什么 它适用于那个项目文件,而不是我制作的那个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多