我们这里有多个产品共用一些公共库,这些库是独立解决方案的一部分(因此可以由TFS独立构建),但问题在于开发过程中,人们必须修改公共库,将其编译为二进制文件,将其复制到公共位置,然后才能编译产品解决方案。
为了避免这种情况,我想知道是否可能有条件引用,因此对于调试配置,我将它们作为项目引用进行引用,而在发布配置中,它们将作为二进制引用进行引用。
我们这里有多个产品共用一些公共库,这些库是独立解决方案的一部分(因此可以由TFS独立构建),但问题在于开发过程中,人们必须修改公共库,将其编译为二进制文件,将其复制到公共位置,然后才能编译产品解决方案。
为了避免这种情况,我想知道是否可能有条件引用,因此对于调试配置,我将它们作为项目引用进行引用,而在发布配置中,它们将作为二进制引用进行引用。
<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有更多关于使用条件结构的信息。
您可能需要了解NuGet:
NuGet是一个免费、开源的面向开发者的软件包管理系统,旨在简化.NET平台上将第三方库整合到.NET应用程序中的过程。
(在这种情况下,您自己将成为第三方)
注意:这不会给您提供条件引用,但它会简化更新常见组件的过程。
.csproj
文件来实现此操作。 - SLaks