Visual Studio 2010 条件引用

26

我们这里有多个产品共用一些公共库,这些库是独立解决方案的一部分(因此可以由TFS独立构建),但问题在于开发过程中,人们必须修改公共库,将其编译为二进制文件,将其复制到公共位置,然后才能编译产品解决方案。

为了避免这种情况,我想知道是否可能有条件引用,因此对于调试配置,我将它们作为项目引用进行引用,而在发布配置中,它们将作为二进制引用进行引用。


1
我不知道有什么好的方法;过去我使用了多种解决方案...如果你正在进行重大架构更改,可以使用一个“主”解决方案来引用所有内容,然后使用单独的项目解决方案来处理单个项目。通常很麻烦。 - Chris Baxter
您可以通过手动修改.csproj文件来实现此操作。 - SLaks
你可以通过修改构建过程来实现这一点。使用像MsBuild这样的工具。 - Eduardo Xavier
2个回答

39
你可以通过直接编辑项目文件(VS IDE不会为你完成此操作)来使用条件结构实现此目标。
例如,你可以使用"Choose"元素来完成类似下面的工作:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
    <PropertyGroup>
        <!-- ... --> 
    </PropertyGroup>
    <Choose>

        <When Condition=" '$(Configuration)'=='Debug' ">
            <ItemGroup>
                <ProjectReference Include="..\stuff\MyStuff.csproj">
                    <Project>{4c7bbe47-8d84-45d4-95f0-f640ba59563c}</Project>
                    <Name>MyStuff</Name>
                </ProjectReference>
            </ItemGroup>
        </When>

        <When Condition=" '$(Configuration)'=='Retail' ">
            <ItemGroup>
                <Reference Include="MyStuff.dll" />
            </ItemGroup>
        </When>

    </Choose>
    <!-- Rest of Project -->
</Project>

MSDN有更多关于使用条件结构的信息


这些项目也必须是解决方案的一部分吗? - np-hard
我相信是这样的,但在“发布”情况下应该还好。它们应该显示为未找到,这并不重要,因为在发布版本中它们实际上并没有被引用。 - Matt

4

您可能需要了解NuGet:

NuGet

NuGet是一个免费、开源的面向开发者的软件包管理系统,旨在简化.NET平台上将第三方库整合到.NET应用程序中的过程

(在这种情况下,您自己将成为第三方)

注意:这不会给您提供条件引用,但它会简化更新常见组件的过程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接