我想同时在我的项目(A)和一个从属Nuget包(B)中工作,而不需要在每次更改时释放nuget包.
在构建Debug时,是否可以从解决方案(A)中执行项目引用Nuget项目(B).构建Release时使用Source中的Nuget包?
解决方法
一种方法是手动编辑csproj文件.
如果您当前已经引用了NuGet包,那么您将在csproj文件中有一个部分,如下所示:
如果您当前已经引用了NuGet包,那么您将在csproj文件中有一个部分,如下所示:
.... <ItemGroup> <Reference Include="log4net,Version=2.0.8.0,Culture=neutral,PublicKeyToken=669e0ddf0bb1aa2a,processorArchitecture=MSIL"> <HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="System" /> <Reference Include="System.Core" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Data" /> <Reference Include="System.Xml" /> </ItemGroup> ....
在此示例中,使用log4net.对于您的NuGet包,公钥令牌,版本等是不同的.
你无法改变它:
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|Anycpu' "> <Reference Include="log4net"> <HintPath>Debug\log4net.dll</HintPath> <Private>True</Private> </Reference> </ItemGroup> <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|Anycpu' "> <Reference Include="log4net,processorArchitecture=MSIL"> <HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath> <Private>True</Private> </Reference> </ItemGroup>
ItemGroup元素中的Condition属性在调试和发布之间执行作业.