【发布时间】:2019-12-13 21:43:19
【问题描述】:
我有 2 个项目 (.Net 4.0)
- 一个类库(DataProvider)
- 添加对 Bcl.Async 库的引用(通过 nuget)
- 提供一些异步方法
- 网站 (SampleSite)
- 对“DataProvider”的引用
问题:
- 当我使用 Visual Studio 构建时,一切都很好(我使用 VS 2017 社区)
- 尝试使用 MSBuild (MSBuild /target:rebuild /p:Configuration=Release /m:4) 时,我收到此警告“..\WebSite1_1_.metaproj”(重建目标)(2) -> ..\WebSite1_1_.metaproj : 警告 MSB3268: 无法解析主要引用“...\WebSite1\DataProvider\bin\Debug\DataProvider.dll”,因为它间接依赖于框架程序集 “System.Runtime, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”在当前目标框架中无法解决。 “.NETFramework,版本=v4.0”。 要解决此问题,请删除引用“...\WebSite1\DataProvider\bin\Debug\DataProvider.dll”或将您的应用程序重新定位到包含“System.Runtime, Version=1.5.11.0, Culture=neutral”的框架版本, PublicKeyToken=b03f5f7f11d50a3a"."
- 最新的 DataProvider dll 不会被复制到“SampleSite”的 Bin 文件夹中,如果我使用 DataProvider 中的一些新内容,我会收到错误(构建失败)
我已经搜索过,包括 StackOverFlow。但我找不到与我的场景相关的任何内容。
我试过了:
- 更新 app.config/web.config
- 将 BCL dll 复制到 .Net 4.0 引用程序集文件夹
- 通读此 (https://blogs.msdn.microsoft.com/bclteam/p/asynctargetingpackkb/) 但找不到任何方法来解决我的问题
(这个问题没有代码)
我的期望:
- 我可以使用 MSBuild 或其他东西自动解决这个问题(因为这个问题是在我的构建服务器上自动发生的)
更新图片
如果我右键单击“WebSite2”-> 建立网站,一切都会好起来的。但我想使用 msbuild 进行自动化工作
【问题讨论】:
-
这是
Microsoft.Bcl.Async包的已知问题,请参阅dotnet/cli 5993#。如果您的 .net 4.0 项目是 SDK 格式,我认为它们是相同的问题。 -
就我而言,只有关于 BCL 的警告。问题只有在我使用 MsBuild 时,Visual Studio 没问题,我可以编写代码、构建、调试...等
-
其实,如果你在VS中新建一个简单的类库在同一个解决方案中,并添加对DataProvider项目的引用,即使在VS中也可以得到警告。
-
是的,但是如果“SampleSite”是一个 WebApplication 也没关系。在我的例子中,它是一个网站,当添加对“DataProvider”的引用时,它会将 DataProvider.dll 复制到“SampleSite”的 Bin 文件夹中。如果我用 VisualStudio 构建,DataProvider.dll 会更新,并且在“SampleSite”中使用的“DataProvider”的新代码是可以的。如果我使用 MSBuild,它会显示警告,然后在构建“SampleSite”时显示错误(这意味着 DataProvider.dll 未更新)
-
DataProvider的工程文件是什么格式的?新 sdk 格式还是旧格式?
标签: .net visual-studio web msbuild base-class-library