相关疑难解决方法(0)

发布生成.pdb文件,为什么?

为什么Visual Studio 2005 .pdb在发布时编译时会生成文件?我不会调试发布版本,为什么它们会生成?

.net debugging debug-symbols visual-studio pdb-files

251
推荐指数
4
解决办法
10万
查看次数

打包在发布模式下编译的NuGet项目?

有没有办法使用在发布模式下编译的代码来创建NuGet包?或者是否有一些原因我应该只发布(在本地使用,在这种情况下可用)在调试模式下编译的包?

每次我nuget pack从我的项目目录中调用时,我在下面的nuspec文件,在代码我只在发布模式下编译,它抱怨没有在调试文件夹("\bin\Debug\SomeProject.dll")中找到DLL .如果我在调试模式下编译它,那些文件就在那里并按照它应该将它们打包.

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>$id$</id>
        <version>$version$</version>
        <authors>$author$</authors>
        <owners>$author$</owners>
        <iconUrl>http://somewhere/project.png</iconUrl>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>$description$</description>
    </metadata>
</package>
Run Code Online (Sandbox Code Playgroud)

nuget

101
推荐指数
3
解决办法
3万
查看次数

Nuget的最佳实践:调试还是发布?

目前,我将发布版本与Nuget一起打包到nuget.org的官方版本,但是我使用Nuget将调试版本打包为符号源推送到symbolsource.org.

编辑:( Jon Skeet,与Noda Time开发有一些偏见)

NuGet现在支持推送到NuGet gallery symbolsource.org(或类似的服务器),如文档所述.不幸的是,这里有两个相互矛盾的要求:

  • 当只使用库而不需要调试时,你真的想要一个发布版本.毕竟,这就是发布版本的用途.
  • 在调试库以进行诊断时,您确实需要一个禁用所有适当优化的调试版本.毕竟,那就是调试构建的目的.

这没关系,但是NuGet没有(据我所知)允许在同一个包中以有用的方式发布发布和调试版本.

所以,选择是:

  • 将调试版本分发给每个人(如文档中的示例所示),并使用任何大小和性能命中.
  • 将发布版本分发给每个人,并且稍微有点受损的调试体验.
  • 寻找一个非常复杂的分发策略,可能提供单独的发布和调试包.

前两个真正归结为调试和发布版本之间差异的影响......虽然值得注意的是,想要进入库代码之间也存在很大差异,因为你想要检查一些行为,并且想要调试库的代码,因为你相信你发现了一个bug.在第二种情况下,最好将库的代码作为Visual Studio解决方案并以这种方式进行调试,因此我不会过多关注这种情况.

我的诱惑是继续发布版本,期望相对较少的人需要调试,并且那些不会受发布版本中的优化影响很大的人.(无论如何,JIT编译器完成了大部分优化.)

那么,我们还没有考虑过其他选择吗?是否有其他考虑因素可以达到平衡?将NuGet软件包推向SymbolSource是否足够新,"最佳实践"真的还没有建立?

debugging release visual-studio nuget

84
推荐指数
2
解决办法
2万
查看次数

如何调试从TeamCity部署的nuget包?

我已将我的团队使用的库放入从TeamCity部署到网络文件夹的nuget包中.我虽然无法调试这段代码!SymbolSource是我读过的一个解决方案,但我更愿意找到一些方法直接从Teamcity访问.pdb /源文件.有谁知道如何做到这一点?

编辑. 当我签'Include Symbols and Source'入Nuget Pack构建步骤时,除了网络文件夹中的.nupkg文件之外,TeamCity还会创建.Symbol.nupkg..Symbol.nupkg包含src和.pdb文件.

编辑.'Include Symbols and Source'在TeamCity上取消选中并将以下内容添加到我的nuspec文件中:

  <files>
    <file src="..\MyLibrary\bin\release\MyLibrary.dll" target="lib\net40" />
    <file src="..\MyLibrary\bin\release\MyLibrary.pdb" target="lib\net40" />
    <file src="..\MyLibrary\*.cs" target="src" />
    <file src="..\MyLibrary\**\*.cs" target="src" />
  </files>
Run Code Online (Sandbox Code Playgroud)

这在nuget包中添加了我的库的dll,pdb和源文件,并且没有生成.Symbols文件,我认为这只是符号服务器所需要的.

c# deployment teamcity symbol-server nuget

67
推荐指数
4
解决办法
4万
查看次数

Visual Studio 2010使用Debug或Release版本的第三方库进行编译,具体取决于我的项目是否正在编译Build或Release?

我现在为Visual Studio 2010/C#下载了许多第三方库(dll),我注意到在他们的发行版\ bin目录中,它们通常有两个版本Debug和Release.

有没有办法将这些库添加为项目的引用,但是使用Release构建(当我构建版本时),并使用Debug构建(当我调试时)?

c# dll visual-studio-2010 release-management

39
推荐指数
3
解决办法
1万
查看次数