7

我有一个 .cs 文件,其中包含我想在许多项目中使用的基类。我首先将此cs文件放在项目文件夹上方(与.sln一起)。然后,在项目中,我改变了

<Compile Include="BaseClass.cs">

<Compile Include="..\BaseClass.cs">

这行得通,然后文件图标有一个小快捷箭头。


当我想将项目导出为项目模板时,问题就来了。BaseClass 未包含在模板中,因为它位于项目文件夹之外。我尝试将 BaseClass.cs 添加到模板 zip 并添加
<ProjectItem ReplaceParameters="true" TargetFileName="..\BaseClass.cs">BaseClass.cs</ProjectItem>
到 MyTemplate.vstemplate,但出现错误:
A target file name within the VSTemplate file is invalid, it contains a fully qualified path
如果我删除..\,它会直接包含该文件。如果我不<ProjectItem>使用 .vstemplate 文件,而只是将<Compile Include="..\BaseClass.cs">.csproj 文件放入模板中,它会在Users/me/AppData/Local....

如何让模板引用项目目录之外的文件?

4

2 回答 2

1

这是微软尚未解决的已知问题:https ://connect.microsoft.com/VisualStudio/feedback/details/565068/project-template-relative-file-path-does-not-work

于 2014-03-04T10:05:17.407 回答
-1

您应该在 VSTemplate 中而不是在项目中映射文件夹。VS 不会在模板中进行任何操作。

一个例子是这样的。下面会将文件从“InnerFolder”复制到根目录。

<Folder Name="InnerFolder" TargetFolderName="." >
    <ProjectItem ReplaceParameters="true" TargetFileName="Web.config">Web.config</ProjectItem>
</Folder>
于 2020-07-23T22:49:30.577 回答