如何将文件复制到 Azure Function bin 文件夹中?
How do you copy files into Azure Function bin folder?
背景:
我在 netcoreapp3.1 和 azure 版本 v3 中有一个 Azure Function C# 项目 运行ning。这是 csproj 的片段...
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AssemblyName>someproj</AssemblyName>
<RootNamespace>someproj</RootNamespace>
<Product>someproduct</Product>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<RunPublishAfterBuild>true</RunPublishAfterBuild>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights" Version="2.15.0" />
<PackageReference Include="Microsoft.Applications.Telemetry.Server">
<Version>1.1.264</Version>
<NoWarn>NU1701</NoWarn>
</PackageReference>
<PackageReference Include="System.Configuration.ConfigurationManager" Version="5.0.0-preview.8.20407.11">
<NoWarn>NU1701</NoWarn>
</PackageReference>
</ItemGroup>
</Project>
异常 运行:
'Could not load file or assembly 'System.Configuration.ConfigurationManager,
Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one
of its dependencies. The system cannot find the file specified.'
怀疑原因:
问题是在通过 Visual Studios 构建 azure 函数时,它会创建以下文件夹结构。 (原谅我糟糕的插图)
bin/
| - Debug/
| | -bin /
| | | runtimes/
| | - function1/
| | | - ...
...
---
System.Configuration.ConfigurationManager.dll 位于 Debug/ 文件夹中,而不是二级 bin 文件夹中。在构建和查看相应的 dll 文件时,我可以看到它正在填充到第二个 bin 文件夹中,但后来在 Azure Function Projects 启动之前就被删除了。
现在当我关闭本地 运行 时,将 System.Configuration.ConfigurationManager.dll 添加回第二个 bin 文件夹,一切正常!
实际问题(请帮忙!)
问题1:有没有办法明确告诉visual studio将dll输出到第二个bin文件夹?我已经尝试过以下...
- GeneratePathProperty="true"
- COPY_PASS0
- 所有计算器
问题2:有没有更好的方法来引用这个需要的dll?我已经尝试过 nuget 控制台,但没有成功。
感谢大家的帮助!
任务,RemoveRuntimeDependencies,运行 目标,_FunctionsBuildCleanOutput,是 known to purge assemblies too aggressively。
解决方法是通过设置完全关闭任务(并接受更大的部署):
<_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>
跟踪工作项以获得更精细的切换:https://github.com/Azure/azure-functions-host/issues/5894
背景:
我在 netcoreapp3.1 和 azure 版本 v3 中有一个 Azure Function C# 项目 运行ning。这是 csproj 的片段...
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AssemblyName>someproj</AssemblyName>
<RootNamespace>someproj</RootNamespace>
<Product>someproduct</Product>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<RunPublishAfterBuild>true</RunPublishAfterBuild>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights" Version="2.15.0" />
<PackageReference Include="Microsoft.Applications.Telemetry.Server">
<Version>1.1.264</Version>
<NoWarn>NU1701</NoWarn>
</PackageReference>
<PackageReference Include="System.Configuration.ConfigurationManager" Version="5.0.0-preview.8.20407.11">
<NoWarn>NU1701</NoWarn>
</PackageReference>
</ItemGroup>
</Project>
异常 运行:
'Could not load file or assembly 'System.Configuration.ConfigurationManager,
Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one
of its dependencies. The system cannot find the file specified.'
怀疑原因:
问题是在通过 Visual Studios 构建 azure 函数时,它会创建以下文件夹结构。 (原谅我糟糕的插图)
bin/
| - Debug/
| | -bin /
| | | runtimes/
| | - function1/
| | | - ...
...
---
System.Configuration.ConfigurationManager.dll 位于 Debug/ 文件夹中,而不是二级 bin 文件夹中。在构建和查看相应的 dll 文件时,我可以看到它正在填充到第二个 bin 文件夹中,但后来在 Azure Function Projects 启动之前就被删除了。
现在当我关闭本地 运行 时,将 System.Configuration.ConfigurationManager.dll 添加回第二个 bin 文件夹,一切正常!
实际问题(请帮忙!)
问题1:有没有办法明确告诉visual studio将dll输出到第二个bin文件夹?我已经尝试过以下...
- GeneratePathProperty="true"
- COPY_PASS0
- 所有计算器
问题2:有没有更好的方法来引用这个需要的dll?我已经尝试过 nuget 控制台,但没有成功。
感谢大家的帮助!
任务,RemoveRuntimeDependencies,运行 目标,_FunctionsBuildCleanOutput,是 known to purge assemblies too aggressively。
解决方法是通过设置完全关闭任务(并接受更大的部署):
<_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>
跟踪工作项以获得更精细的切换:https://github.com/Azure/azure-functions-host/issues/5894