I customized my project using a solution I found in this question:
Why doesn't ClickOnce in Visual Studio deploy content files from dependent assemblies?
<ItemGroup>
<AdditionalPublishFile Include="$(OutputPath)\**\*.rpt">
<Visible>False</Visible>
</AdditionalPublishFile>
</ItemGroup>
<Target Name="BeforePublish">
<Touch Files="@(IntermediateAssembly)" />
<CreateItem Include="@(AdditionalPublishFile)" AdditionalMetadata="TargetPath=%(RecursiveDir)%(Filename)%(extension);IsDataFile=false">
<Output TaskParameter="Include" ItemName="_DeploymentManifestFiles" />
</CreateItem>
</Target>
it was working fine with VS 2010, until I upgraded to VS 2012,the additional files were not included in the application manifest !! so when the user install the application, the files mentioned were missing from the application main folder.
what has changed in VS 2012? or maybe the changes are in MSBuild?
EDIT:
I mentioned the original question where from I got the idea, basically I'm using Dependency Injection to load some assemblies, which means there is no hard reference between my project and the assemblies, so the click-once deploy will not take into consideration those assemblies, which force me either to add them to the project, or to use the mentioned solution, I chose the mentioned solution as it is invisible and easy.
but it was broken after migrating to VS 2012.