错误的App.Config publish.targets MSBuild 15

时间:2017-03-16 13:16:29

标签: msbuild visual-studio-2017 msbuild-15

我在GitHub / Microsoft / MSBuild上发布了这个问题,但我希望更广泛的社区可能会有一些早期的经验。

我正在努力将解决方案/项目从VS 2015(.NET核心预览版)转换为VS 2017和最新的.NET Core。

现在,解决方案在Visual Studio 2017中构建完美,但我遇到的问题是尝试使用MSBuild 15运行构建时(由于.NET Core项目,我无法使用v14)。它尝试从obj \ debug \ net452文件夹中复制.config文件失败但由于某种原因它添加了完整的.csproj名称

问题是Publish.Targets正在使用.config文件做一些奇怪的事情。

FileOperations

它将整个项目名称(包括.csproj)添加到配置文件的名称中,而不仅仅是使用AssemblyName。

在这种情况下,Sitecore.Foundation.Commerce.Engine.csproj是项目,代码是AssemblyName(它最终将被重命名为更好的东西)。正如您所看到的,它正在寻找不存在的“Sitecore.Foundation.Commerce.Engine.csproj.code.exe.config”。但是,code.exe.config确实存在。

我很高兴GitHub回复访问任何有兴趣帮助我解决这个问题的人,因为它阻止我们公开存储库。

所以code.exe.config被解析为Sitecore.Foundation.Commerce.Engine.csproj.code.exe.config

来自MSBuild的

OUTPUT片段:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Publish.targets(128,5):
error MSB3030: Could not copy the file "obj\Debug\net452\Sitecore.Foundation.Commerce.Engine.csproj.code.exe.config" because it was not found. 

[C:\Projects\Sitecore.Demo.Retail\src\Foundation\Commerce\Engine\code\Sitecore.Foundation.Commerce.Engine.csproj]

这是Sitecore.Foundation.Commerce.Engine.csproj内容:

08:13:09.957     1>Target "GenerateBindingRedirectsUpdateAppConfig: (TargetId:127)" in file "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\amd64\Microsoft.Common.CurrentVersion.targets" from project "C:\Projects\Sitecore.Demo.Retail\src\Foundation\Commerce\Engine\code\Sitecore.Foundation.Commerce.Engine.csproj" (target "ResolveReferences" depends on it):
                   Set Property: AppConfig=obj\Debug\net452\Sitecore.Foundation.Commerce.Engine.csproj.code.exe.config
                   Added Item(s): 
                       AppConfigWithTargetPath=
                           obj\Debug\net452\Sitecore.Foundation.Commerce.Engine.csproj.code.exe.config
                                   TargetPath=code.exe.config

1 个答案:

答案 0 :(得分:0)

事实证明,我们的一个NuGet引用依赖于不兼容的包。这反过来表现得非常奇怪。

如果这对其他人没有帮助,我很抱歉,但这似乎解决了我们的具体问题。