使用本地项目引用覆盖nuget包引用

时间:2016-04-15 00:05:20

标签: c# msbuild nuget nuget-package

我想在nuget包上迭代,而不必继续将包推送到nuget feed。

我想知道是否可以通过csproj文件中的目标或道具文件有条件地添加项目引用而不是nuget包引用,这将允许我在本地调试我的nuget包。

在我的csproj中我会:

<Reference Include="A">
    if(Exists(localOverrides.props) {
        <HintPath>localOverrides.A.HintPath</HintPath>
    } else {
        <HintPath>..\packages\A.dll</HintPath>
    }
</Reference>

和localOverrides.props将是我的.gitignore中列出的文件,开发人员可以添加以下行:

A -> C:\Repos\A\bin\A.dll

我走错了路吗?当然,必须有一种更可持续的方式来快速迭代和调试nuget包,然后在每次更改时创建预发布包

3 个答案:

答案 0 :(得分:2)

我一直调试Nuget包的方法是,一旦你通过Nuget将这个包添加到你的解决方案中,你就可以对Nuget DLL进行更改,然后将它们复制到使用Nuget的项目的packages文件夹中的正确文件夹中。包。

您所要做的就是在调试模式下编译Nuget项目解决方案的解决方案,然后将它们复制/粘贴到消费项目的包文件夹中。您可以通过编写批处理脚本并将其作为后期构建事件添加到Nuget项目中,将刚刚将DLL复制到正确的文件夹中,从而使这更简单。

答案 1 :(得分:0)

如果您只想调试NuGet包,我建议您使用&#34; dotpeek调试服务器&#34;选项。这样你就不需要对引用做任何事情,只需调试包或任何你想要的东西。 https://confluence.jetbrains.com/plugins/servlet/mobile#content/view/53336814

答案 2 :(得分:0)

听起来您希望在与NuGet打包的装配项目相同的解决方案中使用测试项目(单元或集成)。然后,您可以独立于NuGet包的任何消费者证明它的正确性。良好的测试还有助于确保您在将来更新软件包时无意中破坏任何内容。