出于安全措施,我需要更新Microsoft.Data.OData dll /程序包。 不幸的是,目前尚不清楚为什么该dll位于我们的输出(bin文件夹)中。它在间接使用的地方,我们想知道在哪里。
csproj文件中未引用此软件包-为此,我们将<PackageReference>
与老式csproj一起使用。 (<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
)
是否有办法找出此dll(Microsoft.Data.OData.dll)的来源?我尝试过:
在代码中搜索-我们的代码未使用它。
检查了构建日志。我在构建日志中看到了这一点:
Primary reference "Microsoft.Data.OData, Version=5.8.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35".
2> Resolved file path is "C:\Users\MyUsername\.nuget\packages\microsoft.data.odata\5.8.2\lib\net40\Microsoft.Data.OData.dll".
2> Reference found at search path location "{RawFileName}".
2> Found related file "C:\Users\MyUsername\.nuget\packages\microsoft.data.odata\5.8.2\lib\net40\Microsoft.Data.OData.xml".
2> Found satellite file "de\Microsoft.Data.OData.resources.dll".
2> Found satellite file "es\Microsoft.Data.OData.resources.dll".
2> Found satellite file "fr\Microsoft.Data.OData.resources.dll".
2> Found satellite file "it\Microsoft.Data.OData.resources.dll".
2> Found satellite file "ja\Microsoft.Data.OData.resources.dll".
2> Found satellite file "ko\Microsoft.Data.OData.resources.dll".
2> Found satellite file "ru\Microsoft.Data.OData.resources.dll".
2> Found satellite file "zh-Hans\Microsoft.Data.OData.resources.dll".
2> Found satellite file "zh-Hant\Microsoft.Data.OData.resources.dll".
2> This reference is not "CopyLocal" because at least one source item had "Private" set to "false" and no source items had "Private" set to "true".
2> The ImageRuntimeVersion for this reference is "v4.0.30319".
检查了csproj(此处没有packages.config)-不存在
清理了bin文件夹并重建-可以清除此dll正在输出的项目,并且在重建后就在那里。
还有其他我可以使用的日志或工具吗?
答案 0 :(得分:1)
您可以通过将getInitialProps
开关传递给任何MSBuild执行来创建binary MSBuild log。例如,-bl
用于运行默认目标(通常是构建目标),msbuild -bl
用于在运行发布时获取二进制日志。
如果您未指定二进制日志文件名,则默认为当前目录中的msbuild -t:publish -bl
,而不是项目目录。
然后可以使用https://www.msbuildlog.com查看二进制日志。您可以搜索dll文件名,并找到将其复制到的位置(以及构建中的所有其他引用)。
我使用SDK风格的项目进行了测试,因为它非常容易和快捷,但对于非SDK风格的项目却是如此。将dll复制到目标为msbuild.binlog
的目标文件夹中的bin文件夹中,并执行名为_CopyFilesMarkedCopyLocal
的任务。我以NuGet.Versioning包为例,看到以下消息:
将文件从“ C:\ Users \ zivkan \ .nuget \ packages \ nuget.versioning \ 5.7.0 \ lib \ netstandard2.0 \ NuGet.Versioning.dll”复制到“ C:\ src \ test \ binlogDemo \ bin \ Debug \ net5.0 \ NuGet.Versioning.dll”。
请注意,如果您使用诊断详细级别进行构建,则几乎所有信息都将出现在文本日志输出中。因此,这些“将文件从...复制到...”消息并不需要使用binlog,但是一旦习惯了binlog,它们就更易于阅读和使用。