Asp.net mvc 向ASP.NET应用程序添加Docker支持
我正在为一个运行良好的asp应用程序添加Docker支持。我希望通过点击“添加Docker支持”来利用VS2017 Docker的特性和功能,看看“F5体验”会是什么样子。幸运的是,我马上就被有点神秘的错误所困扰Asp.net mvc 向ASP.NET应用程序添加Docker支持,asp.net-mvc,docker,Asp.net Mvc,Docker,我正在为一个运行良好的asp应用程序添加Docker支持。我希望通过点击“添加Docker支持”来利用VS2017 Docker的特性和功能,看看“F5体验”会是什么样子。幸运的是,我马上就被有点神秘的错误所困扰 1>------ Build started: Project: docker-compose, Configuration: Release Any CPU ------ 1>C:\Program Files (x86)\Microsoft Visual Studio\2
1>------ Build started: Project: docker-compose, Configuration: Release Any CPU ------
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5): error MSB4018: The "ResolveProjectInputAndOutput" task failed unexpectedly.
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5): error MSB4018: System.ArgumentNullException: Value cannot be null.
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5): error MSB4018: Parameter name: path1
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5): error MSB4018: at System.IO.Path.Combine(String path1, String path2)
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5): error MSB4018: at Microsoft.Docker.BuildTasks.ResolveProjectInputAndOutput.ResolveRelativeOutputAssemblyPath(TargetOS targetOS, TargetFramework targetFramework, DockerDevelopmentMode developmentMode)
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5): error MSB4018: at Microsoft.Docker.BuildTasks.ResolveProjectInputAndOutput.Execute()
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
1>----构建已启动:项目:docker compose,配置:释放任何CPU------
1> C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdk\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5):错误MSB4018:“ResolveProjectInputOutput”任务意外失败。
1> C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdk\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5):错误MSB4018:System.ArgumentNullException:值不能为空。
1> C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdk\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5):错误MSB4018:参数名称:path1
1> C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdk\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5):错误MSB4018:at System.IO.Path.Combine(字符串路径1,字符串路径2)
1> C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdk\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5):错误MSB4018:位于Microsoft.Docker.BuildTasks.ResolveProjectInputOutput.ResolveRelativeOutputAssemblyPath(TargetOS-TargetOS,TargetFramework-TargetFramework,DockerDevelopmentMode-developmentMode-developmentMode)
1> C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdk\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5):错误MSB4018:位于Microsoft.Docker.BuildTasks.ResolveProjectInputOutput.Execute()
1> C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdk\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5):错误MSB4018:位于Microsoft.build.BackEnd.TaskExecutionHost.Microsoft.build.BackEnd.ItaskeExecutionHost.Execute()
1> C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdk\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets(80,5):错误MSB4018:位于Microsoft.build.BackEnd.TaskBuilder.d_u26.MoveNext()
我翻到了有问题的文件,这里有一个特别的问题:
<Target Name="DockerResolveProjectInputAndOutput">
<ResolveProjectInputAndOutput ProjectDirectory="$(MSBuildProjectDirectory)" DockerComposeProjectPath="$(DockerComposeProjectPath)" OutputPath="$(OutputPath)" References="@(Reference)" TargetFileName="$(TargetFileName)" TargetPath="$(TargetPath)" />
</Target>
所以我在proj文件中找到了一个峰值,看看是否有任何Docker特有的问题可以找到。我在这里只找到一个参考:
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
。\docker-compose.dcproj
似乎有些配置没有正确完成,这是导致此问题的原因,但还没有很好地弄清楚它会是什么/在哪里 在我的例子中,问题是:我们有一系列配置(开发、测试、测试、生产、调试和发布)。但是,在我试图添加容器支持的应用程序的项目文件中,我们没有用于调试的
部分。该部分是输出路径的位置
奇怪的是,我甚至在Dev
config中运行时也出现了错误
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Dev\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
任意CPU
真的
满的
假的
bin\Dev\
调试;痕迹
促使
4.
假的
此项目有一个“升级过程”来添加docker支持。也许在“步骤”中你可以找到一些神奇的价值。grandaCoder,谢谢你的提示,有趣的是,这正是我开始使用的基线,因此没有足够的细节进行故障排除。它看起来更像是一个点击式的东西,而不是它原来的样子#难道你不想知道这件事的真相吗?你能回答你自己的问题吗?这对我真的很有帮助:)